■29817 / inTopicNo.14) |
Re[9]: 複数の文字コードでファイルを作成するには |
□投稿者/ ま (175回)-(2008/12/15(Mon) 15:59:57)
|
■No29816 (.SHO さん) に返信
> ■No29796 (TTT さん) に返信
>
> 話をわざわざややこしくして混乱しているだけのように思えます。
同感です。
もっと単純に、
SJISは2バイト1セット
JISも漢字なら2バイト1セット
です。
SO/SI考慮する必要無いのであれば、
SJIS文字列を
JIS文字列に変換して
バイナリファイルに書く
上記3行で1行とするSJISデータがあるとき、
バイナリリーダーで読み込み開始します。
byte[2] 配列を用意して、1文字分ずつデータを読みます。
「JIS文字列に変換して」部分だけJISに変換するので
配列に読んだら、変換るーちん通した結果をバイナリライター
のファイルにかきこんであげるだけですね。
http://www.slayers.ne.jp/~oouchi/code/sjistojis.html
SJIS−>JIS 変換るーちん C言語版
2バイト1文字として読み込むので、半角全角混在の場合は
ちょっと工夫が必要ですが、質問のSJISファイルが全角
のみならこんなんでOKかと。
public class Converter {
public static void convert(BinaryReader in, String format, BinaryWriter out) {
//format の o に対応する文字部分だけ JIS にコンバートする
byte[] buffer = new byte[2];
while (!in.EndOfStream) {
for (int i=0;i < format.length;i++) {
in.read(buffer);
if (format.charAt(i) == 'o') out.write(sjtojis(buffer));
else out.write(buffer);
}
}
in.close();
out.flush();
out.close();
}
private static byte[] sjtojis(byte[] buffer) {
//変換るーちんこぴぺして貼り付けても動かないけど。。。
}
}
|
|