サロゲートベア領域のUTF-8保存でデータがNo.11631
elbow さん 06/12/06 22:47
 
こんにちは

> 4バイトのUnicodeの場合、もはやUTF-8では対応する文字コードとは言えず、バ
> イトの羅列なので、UCS-4の0x00020000の文字をUTF-8にすると
>  ED A1 80 ED B0 80
> みたいなことになります。

本当はもっと前に気がつくべきでしたが、上記書き込みを見て大きな問題が
あることに気がつきました。
仕様上サロゲートベア領域をUTF-8に変換した場合4バイトになるはずです。(BOM無
しの場合)
従って、例で言うとサロゲートペア領域の「U+20000」をUTF-8にすると
11110000 10100000 10000000 10000000
F0 A0 80 80

になるはずです。しかしU+20000文字を入力してUTF-8で保存すると
見事にED A1 80 ED B0 80と言った間違った形式で保存されます。これは間違いです。
そちらの環境で再現しますでしょうか?

環境: windowsXP SP2 + 秀丸6.50β5

[ ]
RE:11631 サロゲートベア領域のUTF-8保存No.11636
秀丸担当 さん 06/12/07 11:30
 

>本当はもっと前に気がつくべきでしたが、上記書き込みを見て大きな問題が
>あることに気がつきました。
>仕様上サロゲートベア領域をUTF-8に変換した場合4バイトになるはずです。(BOM無
>しの場合)
>従って、例で言うとサロゲートペア領域の「U+20000」をUTF-8にすると
>11110000 10100000 10000000 10000000
>F0 A0 80 80
>
>になるはずです。しかしU+20000文字を入力してUTF-8で保存すると
>見事にED A1 80 ED B0 80と言った間違った形式で保存されます。これは間違いです。
>そちらの環境で再現しますでしょうか?

これは間違いでした。ありがとうございます。
言われなければ気づかないままだったかも…。お恥ずかしいです。
UTF-8に対応したV3.xxの初期の頃に、4バイト〜6バイトのUTF-8エンコード/デ
コードも考慮した作りにしていたのですが、すっかりそのことを忘れていました。
修正させていただきます。

[ ]
RE:11636 サロゲートベア領域のUTF-8保存No.11744
elbow さん 06/12/13 00:19
 
こんにちは。
こちらの件ですが秀丸6.50β8で修正されていることを確認しました。

[ ]