Java1年目の初心者です。
質問もどのように説明していいかわからなかったので、
至らないところもあるかと思いますが、どうぞ宜しくお願いします。
JIS8の半角カナ文字をUnicodeの全角文字へ変換するロジックを考えております。
やりたいことは以下になります。
①JIS8の変換元テーブル、Unicodeの変換後テーブルをint型の配列に定義します。
//JIS8のテーブル
static final int[] JISTABLE = {0x61,0x41,0x31,0x39,0xFFb1,0xFFb2,0xFFb3,0xFFdd};
//Unicodeのテーブル(以下の文字コードはUnicodeの全角コードではありません)
satic final int[] UNICODETABLE = {0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX};
②HashMapのKeyに変換元テーブルの値、Valueに変換後テーブルの全角のコードを設定しています。
static Map<Integer,Integer> conTable = new HashMap<Integer,Integer>();
static
{
conTable.put(JISTABLE[0],UNICODETABLE[0]);
conTable.put(JISTABLE[1],UNICODETABLE[1]);
conTable.put(JISTABLE[2],UNICODETABLE[2]);
conTable.put(JISTABLE[3],UNICODETABLE[3]);
conTable.put(JISTABLE[4],UNICODETABLE[4]);
conTable.put(JISTABLE[5],UNICODETABLE[5]);
conTable.put(JISTABLE[6],UNICODETABLE[6]);
conTable.put(JISTABLE[7],UNICODETABLE[7]);
}
③指定した文字列(例えば「aA09アイウ」)を1文字毎に処理を行い、HashMapのKeyに存在したらValueの全角文字を返すということを
やりたいのですが、英数字は問題なく変換できるのですが、半角のカナがうまく変換されません(HashMapのKey値とマッチしない)
16進数で確認しても期待した文字コードになりません。
JIS8においての半角かなは何か特殊なのでしょうか?
また、どうやればKey値とマッチするようにできるのでしょうか?
ご教授いただければと思います。
No.1ベストアンサー
- 回答日時:
> //JIS8のテーブル
> static final int[] JISTABLE = {0x61,0x41,0x31,0x39,0xFFb1,0xFFb2,0xFFb3,0xFFdd};
JIS8の半角カナなら、8bitのはずですが、0xFFb1 などと、16bitが混じってます。
どういうことでしょうか?
(ついでに、UnicodeのFFB1、FFB2等は半角カナではありません)
byteの配列としてJIS8を取り込んだのなら、8bitしかないJIS8の文字が 32bitの 0xffb1 と一致するはずがありません。
> 指定した文字列(例えば「aA09アイウ」)を1文字毎に処理を行い
この文字列は、どのように取り込んだものでしょうか?
その段階で、JIS8ではなくなっているとかは、考えられませんか?
例えば、 ファイルからStringへ読み込んだ段階で、内部用のコードに変換がかかってるとか。
外部のJIS8
→Java内部にStringとして取り込み(Unicodeに変換)
→ Stringで半角カナから全角カナ変換
(例 http://www7a.biglobe.ne.jp/~java-master/samples/ …
とするのがいいように思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- C言語・C++・C# S-JIS → JIS コード変換するには 3 2023/02/09 23:55
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
- Windows 8 win8 "ベータ ワールドワイド言語サポートで Unicode UTF-8 を使用"を出したい 2 2023/05/23 19:57
- その他(プログラミング・Web制作) iMacのターミナルにユニコード文字を出す方法 2 2022/06/22 21:48
- C言語・C++・C# VisualStudioのソースコードで漢字を使いたい 4 2022/05/21 10:16
- Excel(エクセル) 幾何学模様のセル内貼り付け 1 2023/07/11 00:45
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グレイコードの変換
-
javaで質問です。 文字列2023/2...
-
世界測地から日本測地への変換...
-
javaの初歩的な質問です。
-
ダブルクォーテーションのrepla...
-
javaでのOracleのデータ登録の...
-
Path型をString型へ変換する(Java)
-
C++で10進数をn進数に…
-
カタカナをローマジに変換する。
-
byte型のマイナスの扱いについて
-
数字を読みに変換する方法について
-
スマホでテキストボックスの随...
-
Jquery 文字列>画像に変換したい
-
画像のテキストデータ化・暗号...
-
秒を時分秒へ変換
-
下記問題の答えが"D"になる意味...
-
カタカナの「ソ」以降の文字が...
-
VBAで配列の計算
-
配列にnullを代入すると、null...
-
ループ処理の際、最後だけ","を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javaで質問です。 文字列2023/2...
-
ダブルクォーテーションのrepla...
-
Path型をString型へ変換する(Java)
-
カタカナをローマジに変換する。
-
int型のゼロ埋め
-
javascriptで文字列のsjis利用...
-
byte[] を long,float とかに...
-
C言語32bitから64bitの移行につ...
-
JavaのStringクラスに「外字」...
-
javaの初歩的な質問です。
-
Visual Basic でのコードをASCI...
-
UTF-8とUnicodeの互換性
-
文字列の比較
-
[Javascript]エンターキー押下...
-
下記問題の答えが"D"になる意味...
-
エクセルVBAで「〜」が表現でき...
-
byte配列をImageに変換する
-
javaで「全角が含まれているか...
-
IBM漢字コード⇒SJIS変換方法
-
Windows-31Jからutf-8への変換...
おすすめ情報