Module: Chef::ReservedNames::Win32::API::Unicode
- Extended by:
- Chef::ReservedNames::Win32::API
- Included in:
- ReservedNames::Win32::Unicode, ReservedNames::Win32::Unicode
- Defined in:
- lib/chef/win32/api/unicode.rb
Constant Summary collapse
- CP_ACP =
Win32 API Constants
0- CP_OEMCP =
1- CP_MACCP =
2- CP_THREAD_ACP =
3- CP_SYMBOL =
42- CP_UTF7 =
65000- CP_UTF8 =
65001- MB_PRECOMPOSED =
0x00000001- MB_COMPOSITE =
0x00000002- MB_USEGLYPHCHARS =
0x00000004- MB_ERR_INVALID_CHARS =
0x00000008- WC_COMPOSITECHECK =
0x00000200- WC_DISCARDNS =
0x00000010- WC_SEPCHARS =
0x00000020- WC_DEFAULTCHAR =
0x00000040- WC_NO_BEST_FIT_CHARS =
0x00000400- ANSI_CHARSET =
0- DEFAULT_CHARSET =
1- SYMBOL_CHARSET =
2- SHIFTJIS_CHARSET =
128- HANGEUL_CHARSET =
129- HANGUL_CHARSET =
129- GB2312_CHARSET =
134- CHINESEBIG5_CHARSET =
136- OEM_CHARSET =
255- JOHAB_CHARSET =
130- HEBREW_CHARSET =
177- ARABIC_CHARSET =
178- GREEK_CHARSET =
161- TURKISH_CHARSET =
162- VIETNAMESE_CHARSET =
163- THAI_CHARSET =
222- EASTEUROPE_CHARSET =
238- RUSSIAN_CHARSET =
204- IS_TEXT_UNICODE_ASCII16 =
0x0001- IS_TEXT_UNICODE_REVERSE_ASCII16 =
0x0010- IS_TEXT_UNICODE_STATISTICS =
0x0002- IS_TEXT_UNICODE_REVERSE_STATISTICS =
0x0020- IS_TEXT_UNICODE_CONTROLS =
0x0004- IS_TEXT_UNICODE_REVERSE_CONTROLS =
0x0040- IS_TEXT_UNICODE_SIGNATURE =
0x0008- IS_TEXT_UNICODE_REVERSE_SIGNATURE =
0x0080- IS_TEXT_UNICODE_ILLEGAL_CHARS =
0x0100- IS_TEXT_UNICODE_ODD_LENGTH =
0x0200- IS_TEXT_UNICODE_DBCS_LEADBYTE =
0x0400- IS_TEXT_UNICODE_NULL_BYTES =
0x1000- IS_TEXT_UNICODE_UNICODE_MASK =
0x000F- IS_TEXT_UNICODE_REVERSE_MASK =
0x00F0- IS_TEXT_UNICODE_NOT_UNICODE_MASK =
0x0F00- IS_TEXT_UNICODE_NOT_ASCII_MASK =
0xF000- TCI_SRCCHARSET =
1- TCI_SRCCODEPAGE =
2- TCI_SRCFONTSIG =
3- TCI_SRCLOCALE =
0x100
Instance Method Summary collapse
Instance Method Details
#utf8_to_wide(ustring) ⇒ Object
Helpers
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
# 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) ⇒ Object
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 |
# 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 |