ユニコードを文字にするプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
tomomi

ユニコードを文字にするプログラム

#1

投稿記事 by tomomi » 7年前

java / javac / xterm / X11 / iBookG4

キーボードからユニコードを入力してそれを文字に変換したいのですが、入力した文字列がそのまま表示されてしまいます。
おかしいところはわかるのですが、どのようにすれば良いのかわからないので教えてください。
お願いします。

コード:

import java.io.*;
import java.io.File;
import java.io.FileWriter;
import java.io.FileReader;
import java.io.BufferedWriter;
import java.io.PrintWriter;
import java.io.IOException;
import java.util.ArrayList;

public class test1{
	public static void main(String args[]){
//ファイル操作
		try{
			File file = new File("MOJILIST.txt");

			if (checkBeforeWritefile(file)){
				PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file, true)));

//文字のキーボード入力
				try{
					BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
					System.out.print("登録したい文字を入力してください。");
					String MOJI = br.readLine();
//この辺からおかしい?
					String c = MOJI;
					char code[] = c.toCharArray();
					System.out.println(code);

					pw.print(code);	
				}catch(IOException e){
					System.out.println(e);    
				}
				}else{
					System.out.println("ファイルに書き込めません");
				}
		}catch(IOException e){
				System.out.println(e);
		}
	}
	private static boolean checkBeforeWritefile(File file){
		if (file.exists()){
			if (file.isFile() && file.canWrite()){
				return true;
			}
		}

		return false;
	}	
}
[/java]

tomomi

Re: ユニコードを文字にするプログラム

#2

投稿記事 by tomomi » 7年前

一部ミスがありました。訂正します。失礼しました。

java / javac / xterm / X11 / iBookG4

キーボードからユニコードを入力してそれを文字に変換したいのですが、入力した文字列がそのまま表示されてしまいます。
おかしいところはわかるのですが、どのようにすれば良いのかわからないので教えてください。
お願いします。

コード:

 

import java.io.*;
import java.io.File;
import java.io.FileWriter;
import java.io.FileReader;
import java.io.BufferedWriter;
import java.io.PrintWriter;
import java.io.IOException;
import java.util.ArrayList;

public class test1{
     public static void main(String args[]){
//ファイル操作
          try{
               File file = new File("MOJILIST.txt");

               if (checkBeforeWritefile(file)){
                    PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file, true)));

//文字のキーボード入力
                         try{
                              BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                                   System.out.print("登録したい文字を入力してください。");
                                   String MOJI = br.readLine();
//この辺からおかしい?
                                   String c = MOJI;
                                   char code[] = c.toCharArray();
                                   System.out.println(code);

                                   pw.print(code);	
                          }catch(IOException e){
                                   System.out.println(e);    
                          }
               }else{
                    System.out.println("ファイルに書き込めません");
               }
          }catch(IOException e){
               System.out.println(e);
          }
     }
     private static boolean checkBeforeWritefile(File file){
          if (file.exists()){
               if (file.isFile() && file.canWrite()){
                    return true;
               }
          }

          return false;
     }	
}

ホヅミ
記事: 110
登録日時: 9年前

Re: ユニコードを文字にするプログラム

#3

投稿記事 by ホヅミ » 7年前

キーボード入力されたものはString型です。
これを一度ユニコード(簡単に数値型orバイト型)に変えてみてください。

ホヅミ
記事: 110
登録日時: 9年前

Re: ユニコードを文字にするプログラム

#4

投稿記事 by ホヅミ » 7年前

僕も作ってみました

コード:

int num;
num = Integer.parseInt(MOJI,16);
char code = (char)num;

// または、一気に省略して
char code = (char)Integer.parseInt(MOJI,16);

tomomi

Re: ユニコードを文字にするプログラム

#5

投稿記事 by tomomi » 7年前

ホヅミさんに書いていただいたプログラムを試しましたがうまくいきませんでした。
確認ですが、キーボードから入力するものはユニコードでいいんですよね?
ちなみに、下記のコード表を参考に「几」を「51E000」と入力したら「p」となってしまいました。

http://www.tamasoft.co.jp/ja/general-info/unicode.html

ホヅミ さんが書きました:

コード:

int num;
num = Integer.parseInt(MOJI,16);
char code = (char)num;

// または、一気に省略して
char code = (char)Integer.parseInt(MOJI,16);

アバター
みけCAT
記事: 6309
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: ユニコードを文字にするプログラム

#6

投稿記事 by みけCAT » 7年前

tomomi さんが書きました:ホヅミさんに書いていただいたプログラムを試しましたがうまくいきませんでした。
確認ですが、キーボードから入力するものはユニコードでいいんですよね?
ちなみに、下記のコード表を参考に「几」を「51E000」と入力したら「p」となってしまいました。

http://www.tamasoft.co.jp/ja/general-info/unicode.html
表の見方が間違っているかもしれません。
「51E0」と入力するとどうなりますか?

追記
多分できると思います。
http://ideone.com/gDGe4x
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

tomomi

Re: ユニコードを文字にするプログラム

#7

投稿記事 by tomomi » 7年前

私も確認しましたが、できました!
ありがとうございます。

あと、また質問したいのですが、これを複数文字入力できるようにしようと思うのですが、ユニコードを連続して入力しても、スペースで区切ってもうまくいきませんでした。
どのようにすれば複数文字入力できるようになりますか?

みけCAT さんが書きました: 表の見方が間違っているかもしれません。
「51E0」と入力するとどうなりますか?

追記
多分できると思います。
http://ideone.com/gDGe4x

ホヅミ
記事: 110
登録日時: 9年前

Re: ユニコードを文字にするプログラム

#8

投稿記事 by ホヅミ » 7年前

なぜ、
char code = (char)Integer.parseInt(MOJI,16);
これで文字が表示されるかを一度落ち着いて考えてみると、自ずと答えは見えるはずです。
入力した16進文字列を数値へ変換しております。
なので、先頭から必要な部分だけを抽出し順番に表示して行けばできるはずです。

ホヅミ
記事: 110
登録日時: 9年前

Re: ユニコードを文字にするプログラム

#9

投稿記事 by ホヅミ » 7年前

もしも、スペースなどで区切ってもいいのならば
http://www.tohoho-web.com/java/string.htm
にある「 文字列を分割する(split)」という項目を見てみると幸せになれるかもしれませんね。

tomomi

Re: ユニコードを文字にするプログラム

#10

投稿記事 by tomomi » 7年前

ホヅミ さんが書きました:もしも、スペースなどで区切ってもいいのならば
http://www.tohoho-web.com/java/string.htm
にある「 文字列を分割する(split)」という項目を見てみると幸せになれるかもしれませんね。

一瞬迷路に迷い込みましたが、幸せになれました!
ありがとうございました<(_ _)>

閉鎖

“C言語何でも質問掲示板” へ戻る