• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:(1)を表示するには)

(1)を表示するには

このQ&Aのポイント
  • 文字列のINPUTに文字列をOUTPUTとする
  • INPUTが60byte以上の場合は60byteに収まるようにしてOUTPUTする
  • 60byteできったときに最後の文字が2byte文字の場合はその文字は取り除いてOUTPUTする

質問者が選んだベストアンサー

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.2

win2000+J2SDK1.4.0で試しましたが、 私の環境では特にMS932と指定しなくても DOSプロンプトで表示できました。 class testmain{ public static void main(String[] args) { System.out.println(formatStatement("0123456789(1)012345678901234567890123456789012345(1)6789012(1)345678901234567890123456789012345678901234567890123456789012345678901234567890123456789")); } public static String formatStatement(String realStatement) { if (realStatement == null || realStatement.getBytes().length < 60) { return realStatement; } byte[] b = realStatement.getBytes(); if ((int) b[60 - 1] < 0) { return new String(realStatement.getBytes(), 0, 60 - 1); } return new String(realStatement.getBytes(), 0, 60); } } eclipse2は使ったことないので設定方法はわかりませんが、ソースの保存形式は SJISになっているのでしょうか? これがUTF8やEUCになっている可能性があると思います。 またコンパイル時に-encodingを明示的にsjisを指定してみてください。 それでも駄目なら、これ以上は私には分かりません。

chi-kon
質問者

お礼

アドバイスありがとうございます。 ご指摘いただいたとおりでした。 eclipseの設定をUTF-8としていたので 上記の現象になっていた模様です。 ソースの保存形式をMS932としておこなったところ 期待通りの動きを致しました。 ありがとうございました。

その他の回答 (1)

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

○の中に1、それは機種依存文字ですね。 同じS-JisでもWindowsのみで定義されています(Mac等では表示できません) 他にも(株)などもそうです。 UNICODEではコード自体存在しません。 ちょっと検索したのですが エンコードをMS932と指定すれば表示できるかもしれません。

参考URL:
http://www.ioctv.zaq.ne.jp/kreuz/java/myref/string.html
chi-kon
質問者

補足

アドバイスありがとうございます。 コードを以下のように変更いたしましたが、 問題解決には至りませんでした。 私が文字コード自体の理解が浅いため 修正方法が誤っているのかもしれません。 byte[] b = null; try { b = realStatement.getBytes("MS932"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); }

関連するQ&A