LoginSignup
13
13

More than 5 years have passed since last update.

D言語でShift-JISを入出力する

Last updated at Posted at 2014-04-28

日本語の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)));
}

結果(コマンドプロンプト)
350ca13dc8b98422d9f7cfd68aa33a8f.png

参考

http://www.prowiki.org/wiki4d/wiki.cgi?NonUnicodeTextInD
http://pen-jr.org/lang_d/middle_lec/encode.php

13
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13