- - PR -
JIS変換とSJIS変換の方法がわかりません
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-12-08 21:57
この変換規則はJISコード、それも不完全なJISコードのようですね。 では……意地悪なことを言いましょうか
の両者を、どう区別しますか(どう区別してますか)? このままでは両者とも、変換後は同じ「%m%m%N%"!&%>%m」(=14bytes)になってしまうかと。
とは、こういうことなのです。 ロロノア・ゾロさんの示した例の場合、JISコードとみなすには、切り替え制御文字が足りません。 本来は、たとえば 「ロロノア・ゾロ」(14bytes) →「\x1B$B%m%m%N%"!&%>%m\x1B(B」(3bytes+14bytes+3bytes, \x1Bはエスケープコード) のような感じで変換されねば、日本語文字(俗に言う全角コード、ここでは「\x1B$B」でJIS X 0208 1983に切り替える)と英数字記号等の文字(俗に言う半角コード、ここでは「\x1B(B」でASCIIコードに切り替える)との区別ができません。 ※:JISコードやISO-2022は奥が深く、私も自信はありませんので。
ということで、ロロノア・ゾロさんの示した例の場合は、切り替え制御文字を省略したために、たまたま14バイト同士になっただけです。 [ メッセージ編集済み 編集者: ぢゃん♪ 編集日時 2004-12-08 22:56 ] | ||||||||||||||||
|
投稿日時: 2004-12-09 09:47
切り替え制御文字がいるのは「JIS」では無く「iso-2022-jp」ではないでしょうか。 本当にJIS(この場合は2バイトの文字コード体系のJIS X 0208)のバイト列に変換したい、と言う要望なのかもしれません。 メールじゃないんだから「JIS」と言ったときにiso-2022-jpだと勝手に判断するのも先走りすぎな気はします。 もちろん質問者の説明不足の感は否めませんが…。 | ||||||||||||||||
|
投稿日時: 2004-12-09 10:21
もちろん、正しくは「iso-2022(iso-2022-jp)」です。 ロロノア・ゾロさんが
この変換規則では、「切り替え制御文字のない(あるいは省略した)iso-2022-jpっぽいもの」に見えますよ。 # はっきり言えば、JISコード表現そのものの話題には触れたくないです。 # 現在、一般的にはiso-2022-jpをもってJISコードといいますが、 # 区点とか、かつて存在したNEC-JISとか、いろいろありますし。 で、ロロノア・ゾロさんのプログラムが、たとえばJIS X 0208以外は一切使わせない、 とかの解決が既にあれば、それはそれでいいんですよ。 要するに、
ということが起きなければ良いので。 [ メッセージ編集済み 編集者: ぢゃん♪ 編集日時 2004-12-09 10:25 ] | ||||||||||||||||
|
投稿日時: 2004-12-09 10:38
なので、「JISに変換したい」のであって「iso-2022-jpに変換したい」と書いているわけではないですよね?
ですから、JIS X 0208かもしれないと書いているわけです。 区別、ついていますか? そもそも、
自体が違うので。 | ||||||||||||||||
|
投稿日時: 2004-12-09 10:47
では、逆に質問します。 JIS X 0208ならば、どのような変換規則を使えば
になりますか? # だからこの手の話題は大嫌い……。 | ||||||||||||||||
|
投稿日時: 2004-12-09 10:55
で、本題から外れるため、話を分けます。こちらは特に返信を期待しませんので。
一般で使われているテキストエディタ(ここでは手元にあるサクラエディタ・TeraPad、今ダウンロードした秀丸で確認)ではiso-2022-jpを「JIS」と呼んで扱っていますが、それは「一般的」には値しないと? # 「間違って呼んでいる」という類の論点ならば、その論議には参加したくありません。 [ メッセージ編集済み 編集者: ぢゃん♪ 編集日時 2004-12-09 11:19 ] | ||||||||||||||||
|
投稿日時: 2004-12-09 11:18
皆さん、回答ありがとうございました。
とりあえず、解決はしました。 自分の説明不足により大変迷惑を掛けました。 言い訳としましては、理解が出来ていないため説明が出来なかったと 反省しています。 スミマセンでした。 今後は気を付けますので、また質問した時はよろしくお願いします。 | ||||||||||||||||
|
投稿日時: 2004-12-09 11:30
だーかーらー。「iso-2022-jp」と「JIS X 0208」が何か知っていればそんな疑問は出てこないと思うのですが。「文字集合」と「文字列符号化方式」と言う言葉もご存じないですか? JIS X 0208はJISで定められた2バイトの文字集合です。「ロ」なら0x256dになります。 iso-2022-jpってのは、符号化方式の方です。どのような形式でストリームやら何やらに流すかを決めています。この「ロ」が0x256dだとして、0x25,0x6dとだけストリームに流しても確かにそれでは「%m」と区別がつかないので、JIS X 0208の文字を流す場合に制御コードが入り、またJIS X 0208からASCIIの文字に切り替える場合は制御コードで切り替えてるわけですよね。その切り替える方式のことをiso-2022-jpと言っているわけです。 で、iso-2022-jpはインターネット(特にメール)で漢字を含むデータを流す際にどうしたらいいか考えられて作られたものです。インターネットと無関係なくらい昔の機器では、漢字を扱うために、「何バイト分のデータのうちXバイトはASCII(かJIS X 0201)、残りの漢字部分はJIS X 0208のデータをそのまま送る」なんて制御コード無しでデータ送受する機器もあるわけです。制御コードがあっても別のものとか。 私はいちゃもんを付けたいために書いているのではないです。 「JIS=iso-2022-jp」ではない事もある(と言うか、JISは日本工業規格であってJISとだけかかれても困る)と言うことを考えて、そのあたりをふまえて熱くならずに読んでください。 --- あぁ、本題は解決してしまったようですが… |