Module: Windows::Unicode
- Defined in:
- lib/windows/unicode.rb
Constant Summary collapse
- CP_ACP =
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
- GetTextCharset =
Win32API.new('gdi32', 'GetTextCharset', 'L', 'I')
- GetTextCharsetInfo =
Win32API.new('gdi32', 'GetTextCharsetInfo', 'LPL', 'I')
- IsDBCSLeadByte =
Win32API.new('kernel32', 'IsDBCSLeadByte', 'P', 'I')
- IsDBCSLeadByteEx =
Win32API.new('kernel32', 'IsDBCSLeadByteEx', 'IP', 'I')
- IsTextUnicode =
Win32API.new('advapi32', 'IsTextUnicode', 'PIP', 'I')
- MultiByteToWideChar =
Win32API.new('kernel32', 'MultiByteToWideChar', 'ILPIPI', 'I')
- TranslateCharsetInfo =
Win32API.new('gdi32', 'TranslateCharsetInfo', 'PPL', 'I')
- WideCharToMultiByte =
Win32API.new('kernel32', 'WideCharToMultiByte', 'ILPIPIPP', 'I')
Instance Method Summary collapse
- #GetTextCharset(hdc) ⇒ Object
- #GetTextCharsetInfo(hdc, sig, flags) ⇒ Object
- #IsDBCSLeadByte(char) ⇒ Object
- #IsDBCSLeadByteEx(code_page, char) ⇒ Object
- #IsTextUnicode(buf, size = buf.size, options = 0) ⇒ Object
-
#multi_to_wide(str) ⇒ Object
Maps a string to a wide (unicode) string using UTF8.
- #MultiByteToWideChar(page, flags, str, str_size, buf, buf_size) ⇒ Object
- #TranslateCharsetInfo(src, cs, flags) ⇒ Object
-
#wide_to_multi(str) ⇒ Object
Maps a wide character string to a new character string.
- #WideCharToMultiByte(page, flags, str, str_size, buf, buf_size, defchar, used_def) ⇒ Object
Instance Method Details
#GetTextCharset(hdc) ⇒ Object
74 75 76 |
# File 'lib/windows/unicode.rb', line 74 def GetTextCharset(hdc) GetTextCharset.call(hdc) end |
#GetTextCharsetInfo(hdc, sig, flags) ⇒ Object
78 79 80 |
# File 'lib/windows/unicode.rb', line 78 def GetTextCharsetInfo(hdc, sig, flags) GetTextCharsetInfo.call(hdc, sig, flags) end |
#IsDBCSLeadByte(char) ⇒ Object
82 83 84 |
# File 'lib/windows/unicode.rb', line 82 def IsDBCSLeadByte(char) IsDBCSLeadByte.call(char) != 0 end |
#IsDBCSLeadByteEx(code_page, char) ⇒ Object
86 87 88 |
# File 'lib/windows/unicode.rb', line 86 def IsDBCSLeadByteEx(code_page, char) IsDBCSLeadByteEx.call(code_pag, char) != 0 end |
#IsTextUnicode(buf, size = buf.size, options = 0) ⇒ Object
90 91 92 |
# File 'lib/windows/unicode.rb', line 90 def IsTextUnicode(buf, size = buf.size, = 0) IsTextUnicode.call(buf, size, ) != 0 end |
#multi_to_wide(str) ⇒ Object
Maps a string to a wide (unicode) string using UTF8. If the function fails it just returns the string as is.
111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/windows/unicode.rb', line 111 def multi_to_wide(str) cp = ($KCODE == 'UTF8') ? CP_UTF8 : CP_ACP buf = 0.chr * str.size * 2 # sizeof(WCHAR) int = MultiByteToWideChar(cp, 0, str, str.size, buf, buf.size) if int > 0 buf[0, int*2] else str end end |
#MultiByteToWideChar(page, flags, str, str_size, buf, buf_size) ⇒ Object
94 95 96 |
# File 'lib/windows/unicode.rb', line 94 def MultiByteToWideChar(page, flags, str, str_size, buf, buf_size) MultiByteToWideChar.call(page, flags, str, str_size, buf, buf_size) end |
#TranslateCharsetInfo(src, cs, flags) ⇒ Object
98 99 100 |
# File 'lib/windows/unicode.rb', line 98 def TranslateCharsetInfo(src, cs, flags) TranslateCharsetInfo.call(src, cs, flags) != 0 end |
#wide_to_multi(str) ⇒ Object
Maps a wide character string to a new character string. If the function fails it just returns the string as is.
126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/windows/unicode.rb', line 126 def wide_to_multi(str) cp = ($KCODE == 'UTF8') ? CP_UTF8 : CP_ACP buf = 0.chr * str.size int = WideCharToMultiByte(cp, 0, str, str.size/2, buf, buf.size, 0, 0) if int > 0 buf[0, int] else str end end |
#WideCharToMultiByte(page, flags, str, str_size, buf, buf_size, defchar, used_def) ⇒ Object
102 103 104 |
# File 'lib/windows/unicode.rb', line 102 def WideCharToMultiByte(page, flags, str, str_size, buf, buf_size, defchar, used_def) WideCharToMultiByte.call(page, flags, str, str_size, buf, buf_size, defchar, used_def) end |