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 |