C言語関係掲示板

過去ログ

No.71. Unicodeへの変換


はじめまして。
いきなりですけどちょっと質問させてください。
日本語をISO-LATINのコード番号に変換するには
どのようにしたらよいのでしょうか?
英数字ならASCIIコードと同じようなので、できるのですが
日本語の方の変換の仕方が分かりません。
よろしくおねがいします。


こんばんは、ともじです。

>日本語をISO-LATINのコード番号に変換するには
>どのようにしたらよいのでしょうか?

たぶん、地道に変換テーブルを作って変換するしかないと思います。

#include <stdio.h>
#include <string.h>
#define TB_SIZE 6

char *Cnv_Latin(char *str);
        
int main(void)
{
        printf("%s\n",Cnv_Latin("£"));
                
        return(0);
}

/* 日本語をISO-LATINのコードに変換 */
char *Cnv_Latin(char *str)
{

      char *cnv_tb[][2] = {{"!","&#161"},{"¢","&#162"},{"£","&#163"},
                   {"?","&#164"},{"\\","&#165"},{"|","&#166"}
                /* 以下省略 */ };
        int i;

        for (i=0; i<TB_SIZE; i++) {
                if (strcmp(str,cnv_tb[i][0])==0)
                        return(cnv_tb[i][1]);
        }
        return("該当なし");
}


#define の TB_SIZE は実際の変換テーブルの大きさにしてください。
また、「\」 は "\\" にしてください。

※<pre>タグを入れると、ブラウザがLATINコードをキャラクタ変換してしまう
ので<pre>タグを取ってあります。見やすいように全角スペースが入っています
ので、注意してください。


お返事どうもありがとうございます。

やっぱり自分で変換テーブルつくるしかないのですか。
漢字の変換テーブルつくるの大変そうだ…
もしまた何かいい方法があったらお願いします。


>やっぱり自分で変換テーブルつくるしかないのですか。
>漢字の変換テーブルつくるの大変そうだ…

勘違いしていました。漢字も含むんですね。
ですと、Unicodeでいいんですよね。

ここ参考になりませんか。
http://www.asahi-net.or.jp/~hc3j-tkg/unicode/
「C で書いた JISX0201, JISX0208, JISX0212 <-> Unicode-1.1 のコンバータ」
というのもダウンロードできますよ。


>ここ参考になりませんか。
>http://www.asahi-net.or.jp/~hc3j-tkg/unicode/
>「C で書いた JISX0201, JISX0208, JISX0212 <-> Unicode-1.1 のコンバータ」
>というのもダウンロードできますよ。

ありがとうございます!
こんなページがあるんですね。
感謝!感謝!

戻る


「初心者のためのポイント学習C言語」 Last modified:2001.11.15
Copyright(c) 2000-2002 TOMOJI All Rights Reserved