module Chef::ReservedNames::Win32::API::Unicode
Constants
- ANSI_CHARSET
- ARABIC_CHARSET
- CHINESEBIG5_CHARSET
- CP_ACP
- CP_MACCP
- CP_OEMCP
- CP_SYMBOL
- CP_THREAD_ACP
- CP_UTF7
- CP_UTF8
- DEFAULT_CHARSET
- EASTEUROPE_CHARSET
- GB2312_CHARSET
- GREEK_CHARSET
- HANGEUL_CHARSET
- HANGUL_CHARSET
- HEBREW_CHARSET
- IS_TEXT_UNICODE_ASCII16
- IS_TEXT_UNICODE_CONTROLS
- IS_TEXT_UNICODE_DBCS_LEADBYTE
- IS_TEXT_UNICODE_ILLEGAL_CHARS
- IS_TEXT_UNICODE_NOT_ASCII_MASK
- IS_TEXT_UNICODE_NOT_UNICODE_MASK
- IS_TEXT_UNICODE_NULL_BYTES
- IS_TEXT_UNICODE_ODD_LENGTH
- IS_TEXT_UNICODE_REVERSE_ASCII16
- IS_TEXT_UNICODE_REVERSE_CONTROLS
- IS_TEXT_UNICODE_REVERSE_MASK
- IS_TEXT_UNICODE_REVERSE_SIGNATURE
- IS_TEXT_UNICODE_REVERSE_STATISTICS
- IS_TEXT_UNICODE_SIGNATURE
- IS_TEXT_UNICODE_STATISTICS
- IS_TEXT_UNICODE_UNICODE_MASK
- JOHAB_CHARSET
- MB_COMPOSITE
- MB_ERR_INVALID_CHARS
- MB_PRECOMPOSED
- MB_USEGLYPHCHARS
- OEM_CHARSET
- RUSSIAN_CHARSET
- SHIFTJIS_CHARSET
- SYMBOL_CHARSET
- TCI_SRCCHARSET
- TCI_SRCCODEPAGE
- TCI_SRCFONTSIG
- TCI_SRCLOCALE
- THAI_CHARSET
- TURKISH_CHARSET
- VIETNAMESE_CHARSET
- WC_COMPOSITECHECK
- WC_DEFAULTCHAR
- WC_DISCARDNS
- WC_NO_BEST_FIT_CHARS
- WC_SEPCHARS
Public Instance Methods
utf8_to_wide(ustring)
click to toggle source
Helpers
# File lib/chef/win32/api/unicode.rb, line 136 def utf8_to_wide(ustring) # ensure it is actually UTF-8 # Ruby likes to mark binary data as ASCII-8BIT ustring = (ustring + "").force_encoding('UTF-8') if ustring.respond_to?(:force_encoding) && ustring.encoding.name != "UTF-8" # ensure we have the double-null termination Windows Wide likes ustring = ustring + "\000\000" if ustring[-1].chr != "\000" # encode it all as UTF-16LE AKA Windows Wide Character AKA Windows Unicode ustring = begin if ustring.respond_to?(:encode) ustring.encode('UTF-16LE') else require 'iconv' Iconv.conv("UTF-16LE", "UTF-8", ustring) end end ustring end
wide_to_utf8(wstring)
click to toggle source
# File lib/chef/win32/api/unicode.rb, line 156 def wide_to_utf8(wstring) # ensure it is actually UTF-16LE # Ruby likes to mark binary data as ASCII-8BIT wstring = wstring.force_encoding('UTF-16LE') if wstring.respond_to?(:force_encoding) # encode it all as UTF-8 wstring = begin if wstring.respond_to?(:encode) wstring.encode('UTF-8') else require 'iconv' Iconv.conv("UTF-8", "UTF-16LE", wstring) end end # remove trailing CRLF and NULL characters wstring.strip! wstring end