• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JAVAでSJISのコード変換)

JAVAでSJISのコード変換

kei5989の回答

  • kei5989
  • ベストアンサー率40% (11/27)
回答No.6

#4です。 もひとつ補足を。 文字列をそのまま、 byte[] b = source.getBytes("SJIS"); とすれば、bにはUnicode:2464がSJIS:8744に変換されて格納されてますよ。 そしてbをFileOutputStreamにwriteするのでもOKです。 (この場合、OutputStreamWriterは不要です) ご参考まで。

jackest44
質問者

補足

なるほど。 では、 byte[] sjisb = source.getBytes("SJIS"); byte[] unib = source.getBytes(); として、unibで「2464」が出現した場合に、その位置にある sjisbのコードポイントを「8744」にすればよい訳ですかね。 ↑すでに8744だとは思いますけど。

関連するQ&A

  • javaの文字コードについて

    いつもお世話になっております。 webで入れられた文字列に全角が含まれるか判定したいのですが、 文字コードについて質問させてください。 javaは標準では、String型は標準ではunicodeだと思うのですが、 これはutf-8なのでしょうか。utf-16なのでしょうか。 試しに以下のように"A"の文字をbyteに変換してみたところ、 String strTest = "A"; byte[] bbb = strTest.getBytes(); for(int i = 0 ; i < bbb.length ; i++){ System.out.println(bbb[i]); } "65"という結果が返ってきました。 http://ash.jp/code/unitbl1.htm 等文字コード表を見ると、"A"は"41"と定義されており、なぜ"65"が返ってくるのでしょうか。 変な質問ですいません。 関係無いと思いますが、ソースはS-JIS、windwos環境で実行しています。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 型変換方法について

    困っています。。 下記コードは文字コードのチェックをしているのですが、チェックする文字コードを直接指定するのではなく、 String code = "0x2460" のように持たせておきたいのですが、この文字列を使ってチェックするにはどうしたらよいでしょうか? char型に変換しないといけないと思うのですが変換方法が分かりません。 API等いろいろ調べてみたのですが分かりませんでした。 どうか宜しくお願いします。 コード---------------------------------------- public class CodeCheck {  public static void main(String[] args) {   String str = "a"; // チェック対象文字   char ch = str.charAt(0);   if(ch == 0x2460) {    // エラー処理   } else {    // 正常処理   }  } } ---------------------------------------------

    • ベストアンサー
    • Java
  • SJIS→UTF-8の文字コード変換

    Perlで、SJISの16進で表記された文字があるのですが、それがうまく表示できません。 Unicodeの16進文字コードだとうまく表記できるのですが…。 以下がスクリプトです。 以下の場合だと。(句点)がSJISだと0x8142で、 その16進文字列を表示したいのですが、実行結果にあるエラーが出てしまいます。 Unicodeだと。は0x3002なのですが、うまく表示できています。 すみませんがよろしくお願いします。 ---------------------------------------- # このファイルの文字コードはSJIS # 改行コードはLF # # 。 SJIS 0x8142 # Unicode 0x3002 # use Jcode; use encoding "sjis"; $a = 0x8142; $a = Jcode->new($a, "sjis")->utf8; printf("句点の表示…%c\n",$a); printf("句点の表示…%c\n",0x3002); ---------------------------------------- 実行結果 "\x{8142}" does not map to shiftjis at test.pl line 14, <DATA> line 846. 句点の表示…\x{8142} 句点の表示…。

    • ベストアンサー
    • Perl
  • .NET 文字コードの変換

    VB2008で文字列を他の文字コードにする方法が知りたいです。 何かしての部分がわかりません。 VB2005でも使えるものだったらうれしいです。 Dim str_sjis as string Dim str_euc as string = "パソコン" '例えばEUC-JP '''何かして str_sjisにシフトJISで文字列が入っている。 .Netの文字コードの変換の仕方がごちゃごちゃして分かりづらいです。

  • unicode <-> sjis 変換

    UNICODEからSJISに変換するDLLをVC6.0で作成しました。 2層のswitch文で30000行(約400キロバイト)のソースファイルになりました。 コンパイル後も500キロバイトほどになります。 しかしvectorなどにおいてある変換ソフトをみると100キロバイトほど でした。そういったソフトはどのようにして変換しているのでしょうか? (APIかなにかを呼び出しているのでしょうか?) あるいはunicodeとsjisの漢字コードに数学的な相関関係があるのでしょうか?

  • EUCからSJISに上手く変換できない

    以下のような関数でEUCからSJISに変換しているのですが、 「渕」という字が文字化けしてしまいます。 どんなふうに修正したらいいか、教えて下さい。 【関数】 void euc2sjis(BYTE *code1, BYTE *code2) {   if (*code1 & 0x01) {     *code1 >>= 1;     if (*code1 < 0x6F)       *code1 += 0x31;     else       *code1 += 0x71;     if (*code2 > 0xDF)       *code2 -= 0x60;     else       *code2 -= 0x61;    } else {     *code1 >>= 1;     if (*code1 < 0x6F)       *code1 += 0x30;     else       *code1 += 0x70;     *code2 -= 0x02;    } } 【補足】 「渕」は、EUCではDEB0      SJISでは9FAEだと思います。

  • SJIS⇔UTF-8の文字コード変換

    SJIS⇔UTF-8の文字コード変換をするプログラムを作りたいのですが、簡単な方法があれば教えてください。 できれば、文字コードをケース文で判断して・・・のような処理ではないほうが、ありがたいです。

  • 「C#」文字コードの取得&文字変換

    C#で文字コードを調べるプログラムを作成しています。 そこで2つ質問をさせてください。 1つ目(文字コード調べ) TextBoxに漢字を入力して,各エンコーディングの文字コードを調べるときに,UNICDEの場合, Encoding enc_default = Encoding.GetEncoding(932); string input = tb_input.Text; byte[] byte_input = enc_default.GetBytes(input); string outtext_unicode = ""; Encoding enc_unicode = Encoding.Unicode; byte[] byte_unicode = Encoding.Convert(enc_default,enc_unicode, byte_input); foreach (byte b in byte_unicode) { outtext_unicode += string.Format("{0:X}", (int)b); } tb_output_unicode.Text = outtext_unicode; とすると,調べたい文字コードがLE(リトルエディアン)で出力されます。これをBE(ビッグエディアン)で出力されるにはどうしたらよいでしょうか? ご存知の方がいらっしゃいましたら,ぜひ教えてください。 よろしくお願いいたします。 2つ目(文字コードから文字を取得する) 上記の質問と逆のパターンで,TextBoxに文字コードを入力してもらい,人間が読める文字に変換する場合下記のようなコードを書くと, string codePoint_string = tb_output_unicode.Text; int codePoint = int.Parse(codePoint_string); char c = (char)codePoint; tb_input.Text = Convert.ToString(c); ASCIIの文字コードを入力した場合には,きちんと変換してくれるのですが,漢字の文字コードを入力すると,FormatExceptionが発生します。 何か勘違いをしているのかもしれませんが,いまいちやり方が創造できません。 こちらも,ご存知の方がいらっしゃいましたら,ご教示願います。

  • SJIS->UTF8->SJISコード変換について

    Windows XPでVB.NET2010で文字コード変換のプログラムを下記のように作成しました。 Dim beforeStr As String = "変換前" Dim utfEnc = System.Text.Encoding.GetEncoding(65001) Dim sjisEnc = System.Text.Encoding.GetEncoding(932) Dim beforeBytes() As Byte = utfEnc.GetBytes(beforeStr) Dim afterBytes() As Byte = System.Text.Encoding.Convert(sjisEnc, utfEnc, beforeBytes) Dim afterStr As String = sjisEnc.GetString(afterBytes) TextBox3.Text = afterStr Dim reverseStr As String = afterStr Dim reverseBytes() As Byte = sjisEnc.GetBytes(reverseStr) Dim baseBytes() As Byte = System.Text.Encoding.Convert(utfEnc, sjisEnc, reverseBytes) TextBox4.Text = utfEnc.GetString(baseBytes) SJIS->UTF8に変換して、確認のためにUTF8->SJISに逆変換してみましたが、 「変換」までは正しいのですが、最後の「前」が文字化けしてしまします。 正しくSJIS-.UTF8->SJISするには、どのように修正すればよろしいでしょうか? よろしくお願いします。

  • Javaの文字コード変換方法

    文字コードの変換で困っています。 例えば、標準入力で「あいう」と入力して、その文字列を UTF-8に変換して出力したいのですが、うまくいきません。 サイトにはbyteに変換してから入れると書いていましたが、 よくわかりませんでした。 宜しくお願いします。 以下、今できているソースです。 (ソースコード) import java.io.*; public class ChangeCord { public static void main( String[] args ) { try { System.out.println("何か日本語を入力してください。"); BufferedReader br = new BufferedReader( new InputStreamReader(System.in, "UTF-8")); String str = br.readLine(); System.out.println("文字コードUTF-8に変換した結果"); System.out.println(str); }catch (Exception e) { System.out.println("エラー"); } } } (出力結果) 何か日本語を入力してください。 あいう 文字コードUTF-8に変換した結果 ?????? 以上です。

    • ベストアンサー
    • Java