【UTF8】文字コード変換【SJIS】

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:05/01/25 13:38:52
JIS X 0213にも「異体字を表す制御文字」を追加することができないだろうか?
確か第1面にも30文字程度の空き区点(バラバラに存在する)があったはずなので、
そこを「異体字を表す区点」にしてしまえば比較的簡単に異体字を表現することができる。

ほとんど使われていないJIS X 0213を捨ててしまって、また別のJIS X 0208上位互換の
文字コード体系を作ればすっきりした体系になるのはわかってはいるのだが、
JIS X 0212でさえ完全には捨て切れない現状を考えると…
953デフォルトの名無しさん:05/01/25 13:48:59
ttp://headlines.yahoo.co.jp/hl?a=20050125-00000401-yom-soci
だからどうという程のものでもないがな。
954デフォルトの名無しさん:05/01/25 14:44:44
まぁ現状よりましになるんじゃない? ていうか今までがひどかったのか。
955デフォルトの名無しさん:05/01/26 09:44:44
JISの中の人は、また包摂の解説→議論やらないといけないね…
956デフォルトの名無しさん:05/01/26 15:13:00
そしてあの包摂基準では国語審議会側やら何やらを納得させられないので(ry
957デフォルトの名無しさん:05/01/31 18:47:26
かなりずれるが
草かんむり、3画に 4画派・大修館書店が「決断」
http://news.goo.ne.jp/news/asahi/shakai/20050131/K2005013101680.html

 3画か4画か――漢和辞典で長い間、揺れていた「草かんむり」の画数が、
大修館書店が出した「新・漢語林」で3画に変わった。同書店は世界最大の
漢和辞典、諸橋轍次の「大漢和辞典」(1960年)を発行している老舗(しにせ)。
中国の古い文書を読もうとする専門家が頼りにする「大漢和」では4画だ。
常用漢字や人名用漢字の3画に追随するのは、「大きな決断」だった。

 「新・漢語林」部首解説によると、草かんむりは、
国語審議会の表外漢字字体表(00年)やJIS漢字で3画とされ、
明朝体活字は3画で作られている。真ん中が切れた形の4画は
「漢和辞典の見出し字を除いて極めて少ない」という。

 「新・漢語林」編集部の円満字二郎さんは「表外漢字字体表がきっかけで、
電子辞書に搭載するにも3画、4画両方では負担が大きい。
諸般の事情を考えて決断したのに残念ながら反響は全くありません」という。
958デフォルトの名無しさん:05/01/31 18:48:12
> 残念ながら反響は全くありません
に少々受けてしまった
959デフォルトの名無しさん:05/02/04 22:00:42
SJISとUnicodeの半角カナ←→全角カナ変換をする
ツールを作りたいんですが、この辺のノウハウに
ついての詳しい情報ありませんか?
半角全角変換のみで、SJISとUNICODEの変換は
必要ないです。
960デフォルトの名無しさん:05/02/04 23:03:29
以前倪永茂氏のAlgorithmCollectionという有名なホームページに
あったな、今は削除されているけど。
961デフォルトの名無しさん:05/02/04 23:57:52
wchar_t Hankaku2Zenkaku(wchar_t wc)
{
if(wc == L' ') return L' ';
else if(wc < L'ヲ' || wc > L'゚') return wc;
else if(wc >= L'ア' && wc <= L'オ') return L'ア' + (wc - L'ア') * 2;
else if(wc >= L'カ' && wc <= L'チ') return L'カ' + (wc - L'カ') * 2;
else if(wc >= L'ツ' && wc <= L'ト') return L'ツ' + (wc - L'ツ') * 2;
else if(wc >= L'ナ' && wc <= L'ノ') return L'ナ' + (wc - L'ナ');
else if(wc >= L'ハ' && wc <= L'ホ') return L'ハ' + (wc - L'ハ') * 3;
else if(wc >= L'マ' && wc <= L'モ') return L'マ' + (wc - L'マ');
else if(wc >= L'ヤ' && wc <= L'ヨ') return L'ヤ' + (wc - L'ヤ') * 2;
else if(wc >= L'ラ' && wc <= L'ロ') return L'ラ' + (wc - L'ラ');
else if(wc == L'ワ') return L'ワ';
else if(wc == L'ヲ') return L'ヲ';
else if(wc == L'ン') return L'ン';
else if(wc >= L'ァ' && wc <= L'ォ') return L'ァ' + (wc - L'ァ') * 2;
else if(wc >= L'ャ' && wc <= L'ョ') return L'ャ' + (wc - L'ャ') * 2;
else if(wc == L'ッ') return L'ッ';
else if(wc == L'ー') return L'ー';
else if(wc == L'゙') return L'゛';
else if(wc == L'゚') return L'゜';

return wc;
}
962デフォルトの名無しさん:05/02/04 23:59:32
int Zenkaku2Hankaku(wchar_t wc, wchar_t *ans)
{
if(wc == L' '){ *ans = L' '; return 1; }
else if(wc == L'ワ'){ *ans = L'ワ'; return 1; }
else if(wc == L'ヲ'){ *ans = L'ヲ'; return 1; }
else if(wc == L'ン'){ *ans = L'ン'; return 1; }
else if(wc == L'゛'){ *ans = L'゙'; return 1; }
else if(wc == L'゜'){ *ans = L'゚'; return 1; }
else if(wc == L'ー'){ *ans = L'ー'; return 1; }
else if(wc < L'ァ' || wc > L'ロ'){ *ans = wc; return 1; }
else if(wc == L'ッ'){ *ans = L'ッ'; return 1; }
else if(wc >= L'ァ' && wc <= L'オ'){
int x = (wc - L'ァ');
*ans = ((x % 2) ? (L'ア' + (x / 2)) : (L'ァ' + (x / 2)));
return 1;
}else if(wc >= L'カ' && wc <= L'チ'){
int x = (wc - L'カ');
*ans = L'カ' + (x / 2);
if(x % 2){
*(ans+1) = L'゙';
return 2;
}else{
return 1;
}
963デフォルトの名無しさん:05/02/05 00:00:03
}else if(wc >= L'ツ' && wc <= L'ト'){
int x = (wc - L'ツ');
*ans = L'ツ' + (x / 2);
if(x % 2){
*(ans+1) = L'゙';
return 2;
}else{
return 1;
}
}else if(wc >= L'ナ' && wc <= L'ノ'){
*ans = L'ナ' + (wc - L'ナ');
return 1;
}else if(wc >= L'ハ' && wc <= L'ホ'){
int x = (wc - L'ハ');
*ans = L'ハ' + (x / 3);
if((x % 3) == 1){
*(ans+1) = L'゙';
return 2;
}else if((x % 3) == 2){
*(ans+1) = L'゚';
return 2;
}else{
return 1;
}
}else if(wc >= L'マ' && wc <= L'モ'){
*ans = L'マ' + (wc - L'マ');
return 1;
964デフォルトの名無しさん:05/02/05 00:00:44
}else if(wc >= L'ャ' && wc <= L'ヨ'){
int x = (wc - L'ャ');
*ans = ((x % 2) ? (L'ヤ' + (x / 2)) : (L'ャ' + (x / 2)));
return 1;
}else if(wc >= L'ラ' && wc <= L'ロ'){
*ans = L'ラ' + (wc - L'ラ');
return 1;
}

return 0;
}
965デフォルトの名無しさん:05/02/07 20:54:12
>>957
この新漢語林読んだんだけど、なぜか芸亭(ウンテイ)の芸だけが4画で残っているの。
草冠を3画に統一するんだったら、ゲイとウンを餘と余みたいに同一文字の扱いにするか、
「同一字形だけど別字」にしたほうがよいと思ったんだけどなぁ。
966デフォルトの名無しさん:05/02/15 19:54:00
Jcode-1.99_04 make とおりまんた。
かんきょうは OpenBlock S200 , perl 5.6.1 でし。
よかったね。

[a@obss Jcode-1.99_04]$ make test
make[1]: Entering directory `/home/a/src/Jcode-1.99_04/Unicode'
make[1]: Leaving directory `/home/a/src/Jcode-1.99_04/Unicode'
PERL_DL_NONLAZY=1 /usr/bin/perl -Iblib/arch -Iblib/lib -I/usr/lib/perl5/5.6.1/ppc-linux -I/usr/lib/p
erl5/5.6.1 -e 'use Test::Harness qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t
t/append.....ok
t/convert....ok
t/getcode....ok
t/h2z........ok
t/length.....ok
t/mime.......ok
t/new........ok
t/perl581....skipped
all skipped: Perl 5.8.1 or later required
t/regex......skipped
all skipped: Perl 5.8.1 or later required
t/tr.........ok
All tests successful, 2 tests skipped.
Files=10, Tests=220, 119 wallclock secs (90.21 cusr + 25.26 csys = 115.47 CPU)
make[1]: Entering directory `/home/a/src/Jcode-1.99_04/Unicode'
No tests defined for Jcode::Unicode extension.
make[1]: Leaving directory `/home/a/src/Jcode-1.99_04/Unicode'
[a@obss Jcode-1.99_04]$
967デフォルトの名無しさん:05/02/15 21:19:29
>>959
窓ならLCMapString
968デフォルトの名無しさん:05/02/19 01:15:40
学校の宿題教えて禁止
ここのスレはみんなが見てますやめましょう
969デフォルトの名無しさん:05/02/19 01:17:02
学校で宿題出されました。どなたか解答お願いできませんでしょうか?
970デフォルトの名無しさん:05/02/20 22:28:34
あまり真剣に考えてもらわなくてもいいんですが、

多少間違ってても、判定不可という結論でもいいから
主にSJIS,EUC,UTF-8で書かれた短い文章のコードを判定するのに
上手い方法はありませんかね?

というか、ぶっちゃけ2ch内に張られた
googleとかwikiへのリンクのURLエンコードされた部分を
iconv辺りを使ってSJISに直して表示してリンクしたら面白いかな、と
ちょっと思ってみただけなんで
判定不可ならそのまま%xx%yyで表示すればよいだけなんで。
971デフォルトの名無しさん:05/02/21 01:36:35
SJISにしか出てこない値が出てきたらSJIS
EUCにしか出てこない値が・・・(以下略
972デフォルトの名無しさん:05/02/21 04:43:01
ASCIIにしか出てこない値が出てきたらASCII
973デフォルトの名無しさん:05/02/21 05:46:07
色々切り替えて読めればそれ
974デフォルトの名無しさん:05/02/21 21:45:22
EBCDICとかどうよ
975デフォルトの名無しさん:05/02/21 21:46:02
なにが?
976デフォルトの名無しさん:05/02/21 21:55:27
EBCDIKでどうよ
977デフォルトの名無しさん:05/02/21 22:01:00
>>970
SJISのシーケンスを受理するオートマトン、
EUCのシーケンスを受理するオートマトン、
UTF-8のシーケンスを受理するオートマトン、
を用意して、入力バイト列を3つのオートマトンに入れてみる。
入力が終ったときに、受理したままのオートマトンが1つだけなら、
その文字コードで確定。

確定しない場合があるので、そういうときは追加の知識を使うしかない
(google で ie= パラメータがあったら〜、とか)

978デフォルトの名無しさん:05/02/21 22:06:24
↓オートマトン
979デフォルトの名無しさん:05/02/21 22:28:46
メェェー
980デフォルトの名無しさん:05/02/21 22:39:27
SJISのシーケンスを受理するヤギ、
EUCのシーケンスを受理するヤギ、
UTF-8のシーケンスを受理するヤギ、
を用意して、印刷物を3匹のヤギに食わせてみる。
食い終ったときに、「メェェー」って言ったヤギが1匹だけなら、
その文字コードで確定。

二匹啼いたときは、一匹殺せば無問題。


981デフォルトの名無しさん:05/02/21 22:44:47
それじゃぁ手始めに979を殺すということで
982デフォルトの名無しさん:05/02/21 23:14:52
>>970
|多少間違ってても、判定不可という結論でもいいから
|主にSJIS,EUC,UTF-8で書かれた短い文章のコードを判定するのに
|上手い方法はありませんかね?

たぶん変換コード書いた人なら悟ってると思うけど、
3種類出力させて、判断は人間にまかせるのが簡単確実。
問題はその表示のしかたをどう分かりやすくできるかだが…
983デフォルトの名無しさん:05/02/21 23:50:46
確実に判定することは不可能だけど
実用上は980^H^H77の方法でほとんど困らないと思う
利用者としてはリンク開くときに常に3択やらされるたらいやだなぁ
984デフォルトの名無しさん:05/02/21 23:52:10
前半は980で、
二匹鳴いたら二匹並べればいいだろ。
985デフォルトの名無しさん:05/02/22 02:39:43
やっぱむやみにヤギを殺すのはよくないよね
986デフォルトの名無しさん:05/02/22 03:46:34
べつに
987デフォルトの名無しさん:05/02/22 11:07:32
というかさ、ヤギじゃなくてヒツジじゃないの?
988デフォルトの名無しさん:05/02/22 14:42:16
IE5 以上を入れているならばならば、IMultiLanguage にそんなメソッドがあったような?
989デフォルトの名無しさん:05/02/23 00:32:02
  SJISのシーケンスを受理するヒツジが一匹、
  EUCのシーケンスを受理するヒツジが二匹、
  UTF-8のシーケンスを受理するヒツジが三匹、
  .
  .
  zzz
990デフォルトの名無しさん:05/02/23 14:46:57
次スレは?
991デフォルトの名無しさん:05/02/23 14:54:35
【UTF8】文字コード変換 二匹目【SJIS】
992デフォルトの名無しさん:05/02/23 15:35:36
次スレ立てるなら文字コード統一スレとか
Unicodeスレとかがいいんじゃね?
993デフォルトの名無しさん:05/02/23 21:35:57
文字コード統一スレ 1文字目

プログラムにおける文字コードの取り扱いについて議論する統一スレッド
です。

ほぼ前スレ
【UTF8】文字コード変換【SJIS】
http://pc5.2ch.net/test/read.cgi/tech/1063177450/

参考ホームページ
Unicode Home Page
http://www.unicode.org/
Java Character Encodings
http://www.ingrid.org/java/i18n/encoding/
euc.JP: tech docs, BeOS tools
http://euc.jp/
ISO-IR - 2.8.1 Coding systems with Standard return
http://www.itscj.ipsj.or.jp/ISO-IR/2-8-1.htm
ISO-IR - 2.8.2 Coding Systems without Standard return
http://www.itscj.ipsj.or.jp/ISO-IR/2-8-2.htm


こんなんでどうですか?
994デフォルトの名無しさん:05/02/23 21:49:38
>>970
結局んとこは確率になるからなぁ
特に極短い文だとね

IMultiLanguage2::DetectInputCodepage
でもできるけど識別率はどんなもんだろ
試してないからわからんが中国語とかも識別できるだろうからいいかも?

あとは>>691ででてた
ttp://www.gprj.net/dev/tips/net/txtenc.shtml
これか?
これも識別率はわからん
C#だけど
995デフォルトの名無しさん:05/02/23 23:39:52
>>994
多分みんな作ったことあるんだろうな(笑) 俺もある。
短い文だと誤判定が多くなるねー。
いわゆる「半角カタカナ」などというものが滅んでしまえば、かなり楽なんだが。
# 正確にはカタカナのJIS X 0201の方

泥臭いけど、日本語としての特徴を使えば認識率はあがるよ。
漢字ばかりになることはないとか、ひらがなは半分以上であるとか、そういうので点数をつける。
EUC-JPとしてみれば10点、Shift-JISなら25点というふうに。
996デフォルトの名無しさん:05/02/23 23:45:39
もとの質問の対象がURL中の文字列つーのがきついよね。
997デフォルトの名無しさん:05/02/23 23:56:34
>>993 に一票
>>995 gaucheの実装がそんな感じだね。ソースも切り取りやすくてすてき。
998993:05/02/23 23:58:43
立てられませんでした。どなたかお願いします。
999デフォルトの名無しさん:05/02/23 23:59:22
999
1000デフォルトの名無しさん:05/02/24 00:00:14
1000ならunicode死滅
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。