文字コード
タイトルは釣りです。副作用を起こしているのはHaskellから読んでいるCのライブラリです。 Win32 APIのWideCharToMultiByte、MultiByteToWideCharでUTF-16 ⇔ Shift-JIS 変換を行うには変換結果を格納するバッファを確保してそのポインタを引数に渡し、そのバ…
UTF-16 ⇔ Shift-JIS の変換は計算によって行うことが出来ません。 そこで Win32 APIのMultiByteToWideChar、WideCharToMultiByteを使って変換します。 shiftJisToUtf16 Haskell 文字列をWindowsワイド文字列に変換したあとにワイド文字列からpeekCWStringでH…
IBM developerWorks:Unicodeエンコード方式 UTF-8、UTF-16、およびUTF-32間の相互運用方法を参考にUTF-32 ⇔UTF-16変換関数を作ってみました。 Windows COMの内部文字コードはUTF-16を使っています。 一方、HaskellはソースコードはUTF-8で書きますが内部では…
とほほのWWW入門/ 漢字コードについて(各コード間の変換アルゴリズム)を参考にEUC-JPからShift-JISへ変換します。 ASCII このアルゴリズムは全角文字のEUC-JP ⇔Shift_JIS 変換です。ASCIIについては変化ありませんのでそのままリストに追加していきます。 半…
Haskell から COM を呼ぶ ために MultiByteToWideCharを使わないでSysAllocStringで行うためのテストです。 SysAllocString で BSTR を作りますが、SysAllocStringはバイナリの文字列長を含まないワイド文字列の先頭アドレスを返します。読み取るときはCWStr…
Windows のターミナルでは SJIS の文字以外は文字化けすることから、Windows で Haskellを使う場合は常にSJISへの変換が必要になります。 Windowsは内部ではユニコード(UTF16)が使われています。ユーザが実際に触れるのは ShiftJIS ですから、Windowsはには…
ODBC 接続した SQL Server から取得した文字列が化けるので、文字コードについて調べてみます。 kcode という各種文字コードを表示するツールがありますので文字コードを表示してみます。 kcode - 各種文字コードを表示する(Perl) iso-2022-jp :俗に言う「JI…
日本語を含んだHaskellのソースコードは UTF8 で記述しますがコンパイルされた文字列はHaskellの内部コード UCS4 に変換されます。 Windows システムとの文字列のやり取りは UCS4 から SJIS に変換して書き込み、受信した文字列はSJISからUCS4に変換します。…