Charset

続 utf8.hpp

アルゴリズムはほとんど弄れてないんですが、エラーチェックを強化しました。 utf8.hppの差分 テストコード差分 最新の仕様では、 Unicode外のコードはUCSでも使用しない 必然的にUTF-8は1〜4バイト となっているらしいので、これに反する場合は例外を投げる…

utf8.hpp

Hamigaki.ArchiversのUnicode対応は大体終わったので、書いていて気になった箇所をちょこちょこ弄っていきます。 今日はUTF-8のエンコーダ/デコーダを書きました。 コードページ65001でUTF-8に変換するコードは分かりにくいので、専用のコードを用意しただけ…

from_utf16le()

UTF-16からワイド文字列への変換も実装しました。 差分 テストも追加です。 utf16_test.cpp 今度はsizeof(wchar_t)==4でも動作確認済みです。

utf16.hpp

速攻でワイド文字列をUTF-16に変換する関数を用意しました。 <hamigaki/charset/utf16.hpp> sizeof(wchar_t)==4の環境のために作ったのに、その環境で試してません、、、。</hamigaki/charset/utf16.hpp>

CP_ACP

アクティブコードページが使えないと何かと不便なので、POSIX版実装でもロケールからコードページを推測する処理を追加しました。 差分 glibcのiconvならエンコーディングに空文字を指定すればOKです。 Darwinに入っているのもGNUのiconvで、これも同じ仕様…

code_page.hpp

いろいろ利用できそうだったので、コードページの変換処理をHamigaki.Charsetとして独立したライブラリにまとめました。 今日の成果物 とはいえ、実際の処理はWindows APIやiconvが行う他人任せ実装です。 CP〜以外によく使うであろう、「ISO-2022-JP」、「E…