日本語のCSVを読みこんだり書き込んだりなど、文字コードを変換するプログラムを作るときの参考に。
DMD ver2.0.65 を使用してます。
WindowsのコマンドプロンプトはShift-JISなので日本語をそのまま出力しても文字化けします。
また、Shift-JISで保存されたテキストファイルを読み込んで何かするにも工夫が必要です。
std.encodingにあるかと思いきや、std.windows.charsetの方にANSIをもみもみできる処理が入ってますた。
やりかた
sjis.d
import std.stdio;
import std.string;
import std.conv;
import std.file;
import std.windows.charset;
void main(){
string utf8 = "あいうえお";//UTF8
writeln("utf8 : ", utf8);
// UTF8 を Shift-JIS に
writeln("utf8 to sjis : ", to!(string)(toMBSz(utf8)));
auto sjis = File("sjis.txt").readln;//あいうえおをS-JISで保存したファイル
writeln("sjis : ", sjis);
// Shift-JIS を UTF8 に
writeln("sjis to utf8 : ", fromMBSz(toStringz(cast(char[])sjis)));
}
参考
http://www.prowiki.org/wiki4d/wiki.cgi?NonUnicodeTextInD
http://pen-jr.org/lang_d/middle_lec/encode.php