※ ChatGPTを利用し、要約された質問です(原文:(1)を表示するには)
(1)を表示するには
お世話になります。
※タイトル、質問の中に(1)となってしまっていますが、マル1(マルのなかに1が入っている文字です)
以下要件を満たす関数を作りたいと思います
・文字列のINPUTに文字列をOUTPUTとする
・INPUTが60byte以上の場合は60byteに収まるようにしてOUTPUTする
・60byteできったときに最後の文字が2byte文字の場合はその文字は取り除いてOUTPUTする(この場合は60byteより短くなってもよい)
上記の問題を解決するために以下のようなメソッドを作りました。
public static String formatStatement(String realStatement) {
if (realStatement == null
|| realStatement.getBytes().length < CUT_SIZE) {
return realStatement;
}
byte[] b = realStatement.getBytes();
if ((int) b[CUT_SIZE - 1] < 0) {
return new String(realStatement.getBytes(), 0, CUT_SIZE - 1);
}
return new String(realStatement.getBytes(), 0, CUT_SIZE);
}
この場合多くの文字は処理できるのですが、
(1)などの機種依存文字には対応できませんでした。
あとはどのような改良を加えればよいでしょうか?
※(1)などをSystem.out.printlnすると?になってしまいます。この対処方法も教えていただけるとありがたいです。
環境
WindowsXP
Java1.4
開発環境はeclipse2.1
お礼
アドバイスありがとうございます。 ご指摘いただいたとおりでした。 eclipseの設定をUTF-8としていたので 上記の現象になっていた模様です。 ソースの保存形式をMS932としておこなったところ 期待通りの動きを致しました。 ありがとうございました。