2012-02-07 7 views
1

0186は、Unicodeの "コード"です。 198と134はどこから来たのですか?これらのバイトコードからユニコード文字列へ、どうやって逆向きに進むことができますか?ルビ1.8.7のUnicodeエンコーディングでエスケープされた数字が意味するものを説明してください。

>> c = JSON '["\\u0186"]' 
[ 
    [0] "Ɔ" 
] 
>> c[0][0] 
198 
>> c[0][1] 
134 
>> c[0][2] 
nil 

もう混乱を招く事がアンパックです。もう一見任意の数。それはどこから来たのですか?それは正しいですか? 1.8.7 String#unpack documentationから:

U |整数| UTF-8文字として符号なし整数

>> c[0].unpack('U') 
[ 
    [0] 390 
] 
> 

答えて

3

あなたがここにUnicode Character 'LATIN CAPITAL LETTER OPEN O' (U+0186)あなたの答えを見つけることができます。

  • なお、186(16進数)=== 390(10進数)
  • C/C++/Javaのソースコード: "\のu0186"
  • UTF-32(10進数):390
  • UTF-8(16進数):0xC6 0x86で(即ち、198 134)

UTF-8エンコーディングの詳細は、Wikipediaの記事UTF-8で読むことができます。

  • UTF-8(UCS変換形式 - 8ビット[1])は、Unicode文字セットのすべての文字を表す可変幅のエンコーディングです。 UTF-16とUTF-32のエンディアンとバイトオーダーマークが複雑にならないように、ASCIIとの下位互換性を保つために設計されています。
関連する問題