Feature #12877
closedwindows-1255とUnicode間の変換テーブルがWindowsの実装と一致しない
Description
○再現手順
ruby -e 'printf("%#x\n", 0xCA.chr("windows-1255").encode("UTF-8").ord)'
○実際の結果
-e:1:in encode': "\xCA" to UTF-8 in conversion from Windows-1255 to UTF-8 (Encoding::UndefinedConversionError) from -e:1:in
'
○期待した結果
0x5ba
○補足説明
最近MicrosoftはMSDN上のコードページの参照サイト[1]を削除して、unicode.orgの"best fit"マッピングへのリンク[2]に置き換えました。このマッピングには0xCA→U+05BAが含まれています。また実際のWindowsの実装もそうなっています。
GNU libiconv[3]とWHATWG Encoding Standard[4]とGeckoの実装[5]は、すでに追随しました。Blinkも追随する予定です[6]。
[1] http://www.microsoft.com/globaldev/reference/cphome.mspx
[2] ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/
[3] http://git.savannah.gnu.org/gitweb/?p=libiconv.git;a=commitdiff;h=500b967b8f4bcb2bd656c293c5412dc611c5720b
[4] https://github.com/whatwg/encoding/commit/e32a57b886bdb7514f385da3805e606e6faed54f
[5] https://hg.mozilla.org/mozilla-central/rev/49861f351092
[6] https://github.com/whatwg/encoding/issues/73#issuecomment-255800186
Updated by nobu (Nobuyoshi Nakada) about 8 years ago
- Tracker changed from Bug to Feature
- Subject changed from windows-1255とUnicode間の変換テーブルがWindowsの実装と一致しない to Windowsのwindows-1255とUnicode間の変換テーブルが変更された
Updated by nobu (Nobuyoshi Nakada) about 8 years ago
- Status changed from Open to Closed
Applied in changeset r56516.
Update windows-1255 table
- enc/trans/windows-1255-tbl.rb: update mapping from 0xCA to
U+05BA. [Feature #12877]
Updated by emk (Masatoshi Kimura) about 8 years ago
0xCA→U+05BAのマッピングは少なくともWindows 2000から存在するので、変更されたわけではないです(それ以前のOSはいつの間にかVMwareでゲストにファイルを送り込むことができなくなっていて、確認できませんでした)。
U+05BAが追加されたのはUnicode 5.0 (2006年)なのに、なぜそれよりはるか前からマッピングが存在するのかは謎ですが。
Updated by emk (Masatoshi Kimura) about 8 years ago
- Subject changed from Windowsのwindows-1255とUnicode間の変換テーブルが変更された to windows-1255とUnicode間の変換テーブルがWindowsの実装と一致しない
その後VMにファイルを送り込むことに成功しました。IE4がインストールされていないWindows NT 4.0でも、windows-1255のマッピングテーブルはWindows 10と同じでした。というわけで題名を戻します。
東アジア言語版のWin9xはRTL言語をサポートしていないため[1]、Win9xについては結局確認できませんでした。