文字コード総合スレ part2
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/03/26(日) 21:20:39■前スレ
文字コード統一スレ 1文字目
http://pc8.2ch.net/test/read.cgi/tech/1109171258/
■関連スレ
文字コードの種類は何故複数あるのでしょうか?
http://pc8.2ch.net/test/read.cgi/tech/1093251312/l50
■参考サイト
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
0232229
2006/09/09(土) 02:22:41具体的には表示する文の中で、本来全角で書くべきカッコのひとつが
半角になっていたためでした。
これを訂正したところ改善しましたm(_ _)m
0233デフォルトの名無しさん
2006/09/09(土) 02:39:31ブラウザが2chへ送り出す時点でUnicodeからShift_JISに変換してる。
Safariで ~ が化けたりするのはその変換テーブルがWindows PCと
一致していないため。
0234デフォルトの名無しさん
2006/09/09(土) 05:36:160235デフォルトの名無しさん
2006/09/09(土) 09:45:13また、ブラウザによって送る文字コードの種類も変わってくる。
受ける側は自動判別して、文字参照などを駆使して適当な文字コードで保存。
表示するときは、ページの文字コードと同じにする。
俺は表示・入力系はShift_JIS、内部DBはUTF-8が便利だとは思う。
今後ほとんどの環境がUnicodeに切り替わったときに、修正が楽だから。
0236デフォルトの名無しさん
2006/09/09(土) 13:29:53Windows「に」歩み寄るべきだとは一言も言ってないんですが。
永遠に文字化けに悩まされたままでかまわない、解消する必要はないってことですか?
0237デフォルトの名無しさん
2006/09/09(土) 17:16:470238デフォルトの名無しさん
2006/09/09(土) 22:44:12Windows「に」歩み寄るべきでないとは一言も言ってないんですが。
Windowsと一致するかどうかという問題ではなくて、
テキストShift_JIS変換に、
利用者の意図と違うものがあることの問題。
利用者はTILDE、OVERLINEを同一視(%7E)している。
WAVE DASHではなくて。
0239デフォルトの名無しさん
2006/09/10(日) 03:12:21現に文字化けしてるんですが
0240デフォルトの名無しさん
2006/09/10(日) 14:11:110241デフォルトの名無しさん
2006/09/10(日) 16:15:19mohtaと一緒にISO-2022-JP-3が登録されてるお花畑の世界にでも逝っててください
0242デフォルトの名無しさん
2006/09/10(日) 19:29:18http://mail.apps.ietf.org/ietf/charsets/msg01550.html
反応ないけど・・・
0243>>234=>>238だが…
2006/09/11(月) 09:45:30>>237と>>240は、
「それは文字化けじゃなくて、変換の問題である」
ということを非常に稚拙な方法で訴えているのではないか?
0244デフォルトの名無しさん
2006/09/11(月) 23:07:090245デフォルトの名無しさん
2006/09/11(月) 23:49:170246デフォルトの名無しさん
2006/09/12(火) 00:54:08ドキュメントの文字コードと表示システムが想定する文字コードの
不一致が原因じゃないか?
次は機種依存文字。
変換の問題はかなり少ないような…
0247デフォルトの名無しさん
2006/09/12(火) 00:56:54違った文字コードで表示するのはデータ自体に間違いはないわけで
文字化けとは言わない気がする。
0248デフォルトの名無しさん
2006/09/12(火) 01:37:100249デフォルトの名無しさん
2006/09/12(火) 03:20:370250デフォルトの名無しさん
2006/09/12(火) 06:56:160251デフォルトの名無しさん
2006/09/12(火) 13:26:170252デフォルトの名無しさん
2006/09/12(火) 14:38:20ssより、s7のほうが化けにくいですよ。
0253デフォルトの名無しさん
2006/09/12(火) 15:22:46nkf -Sj | nkf -We
後戻りは出来ない
0254デフォルトの名無しさん
2006/09/12(火) 20:55:21>変換ミスこそ文字化けであって、
>違った文字コードで表示するのはデータ自体に間違いはないわけで
>文字化けとは言わない気がする。
「変換ミスは文字化けではない」でしょう?
0255デフォルトの名無しさん
2006/09/13(水) 05:18:57対応を要求されたりする事実に何の変わりもないので、
そんな言葉遊びに興味はありません。
対応の仕方とかの建設的な話題だったらいくらでも話したいですが。
0256デフォルトの名無しさん
2006/09/13(水) 05:25:510257デフォルトの名無しさん
2006/09/13(水) 05:32:220258デフォルトの名無しさん
2006/09/13(水) 15:16:040259デフォルトの名無しさん
2006/09/13(水) 20:51:250260デフォルトの名無しさん
2006/09/20(水) 22:33:26http://www.chokanji.com/webp/soft.html
今どきはしご高やたて崎を例に出すなんて、進歩してないのは
Windowsじゃなくて超漢字関係者の頭の中じゃねーの。
つーかT書体フォントマダー? (AAry
せめてExtension Cに提案されてる寿司屋のメニューに出てきそうな漢字とかを
例に出すくらいの芸は見せてほしいもんだ。
http://www.cse.cuhk.edu.hk/~irg/irg/irg26/IRG26.htm
つーか日本のEvidenceの力の入りようと他国の手抜きっぷりの違いがスゴス
日本は「片割れが入りそうにないからもう片方も削除を提案します」とか言ってるのに
中国はこの期に及んで千字以上追加しろとか言ってるし。
やっぱり(寿司屋のメニューとか人名地名以外では)一部の
古文書や仏典の研究者しか興味なさそうなレア漢字ばっかりになってきた
(そして実際の戸籍システムではJISともUnicodeとも関係ない外字システムの
再発明を続ける)日本と
現実に戸籍システムでGB18030を運用する必要に迫られてる中国の温度差
なんだろうな。
0261デフォルトの名無しさん
2006/09/20(水) 23:54:25これはひどい
0262デフォルトの名無しさん
2006/09/22(金) 22:04:200263デフォルトの名無しさん
2006/09/22(金) 22:39:08どの高橋さんも、ちょっと捜せば自分の名前か家族の名前がはしご高で書かれた
手紙の一通や二通は見つかるだろうし。
なんで活字と手書き文字の区別がつけられなくなっちゃったんだろう。
0264デフォルトの名無しさん
2006/09/22(金) 23:05:360265デフォルトの名無しさん
2006/09/23(土) 09:57:42手書き文字の機能の一部を担ってきたように、
文字集合も手書き文字の機能の極一部を担ってくるようになったと考えては?
全部担うことになるとさすがに困るんだけど。
0266デフォルトの名無しさん
2006/09/23(土) 19:34:24なんかは「おもしろおかしい」が付いてるけどさ、
音声ファイルに関しては「テキストファイル」方式(MIDI)はすっかり廃れたよね。
文書ファイルに関しても同様なことが起きたりはしないのかな。
アウトライン化したPDFか何かばかりになって将来のGoogle先生はデジタルデータに
OCRみたいな処理をするのが当たり前、みたいな。
0267デフォルトの名無しさん
2006/09/23(土) 22:17:14全然廃れてない。(デジタル化)ミュージシャンの間では現役。
0268デフォルトの名無しさん
2006/09/23(土) 22:21:43フォーマットを使うわけないわな。圧縮音楽もしかり
で、将来のGoogle先生は最終出力を相手にしないわけにはいかないでしょ
0269デフォルトの名無しさん
2006/09/23(土) 22:25:34いいえ、MIDIはテキストファイルじゃありませんし、そもそも音声を表すためのデータでもありません。
「楽譜」と「音声」の区別ができない人にとっては、「文字」と「画像」の区別がつかないのかもしれませんが、
>文書ファイルに関しても同様なことが起きたりはしないのかな。
なんてことは有り得ないから安心してください。
0270デフォルトの名無しさん
2006/09/23(土) 22:43:07> じゃありませんし、
> でもありません。
言葉尻をとらえられないように逃げるのがお上手ですね。
> 「楽譜」と「音声」の区別ができない人にとっては、
> 「文字」と「画像」の区別がつかないのかもしれませんが、
Web上で「楽譜」を配る習慣がなくなったように「文字」を配る習慣がなくなる
んじゃね? って言ってるだけですが何がそんなに気にくわないのですか?
0271デフォルトの名無しさん
2006/09/23(土) 23:08:40「MML」はテキストデータ。それをコンパイルして、「標準MIDIファイル」。
MIDIのネットでのやり取り、昔に比べたら、確かに廃れたけどね…。
でも、DTM板やら作曲板やらでは、まだまだ現役。
0272デフォルトの名無しさん
2006/09/23(土) 23:32:56だから、楽譜を配る習慣はなくなってないだろ。
尤も、楽譜は一般人は見る機会が少ないから目立たないわけで、
それを言うなら一般人が文字を見る機会が少なくなるとは思えんが。
0273デフォルトの名無しさん
2006/09/24(日) 01:04:050274デフォルトの名無しさん
2006/09/24(日) 17:10:580275デフォルトの名無しさん
2006/09/24(日) 22:24:57文字情報もベクトルフォント込みになって
文字列比較も類似性で行なうようになるのか?
0276デフォルトの名無しさん
2006/09/25(月) 08:06:28MIDIデータをCDやmp3等のような音楽観賞用のデータだと
勘違いしているから、そういった誤解も生まれるんだよな。
MIDIデータは、楽器を鳴らすためのデータであって、音楽を
作成する人にとっては、いまでも現役。
昔はPCの能力(mp3エンコード時間)や回線の細さなどの問題
から、観賞用にもファイルサイズが小さくてすむMIDIデータ
形式での配布が多かっただけで、それが元に戻っただけ。
昔はGPLなソフトは、ほとんどソースでしか配布されてなかったけど
いまは普通にバイナリも配布されているのと似ている。
0277デフォルトの名無しさん
2006/09/25(月) 08:10:34それは mp3とかも同じだと思うよ。
逆に他音源からのリッピングなどが多いmp3と比べて、自分で打ち込むMIDIのほうが
著作権処理は楽。
0278デフォルトの名無しさん
2006/09/27(水) 01:27:29EUCなのに文字化けせずにコピペできるっていうのは内部で変換されているのでしょうか?
それかまったく違うことをしているのか
0279デフォルトの名無しさん
2006/09/27(水) 01:38:33ケース1
メールソフトはEUCに変換してからGUIに表示してもらっている。
コピー要求に対しても、EUCに変換済みの文字を渡している。
ケース2
メールソフトは変換せずにGUIに変換して表示してもらっている。
コピー要求に対しても変換せずに渡し、後はGUI側に任せている。
たまに臍曲がりなGUIとアプリケーションの組み合わせで文字化けが発生するのは
例えばケース1で表示には変換済みを渡すのにコピーには未変換を渡すようなことをしているから。
その場合でも、GUI側が自動変換するなりペースト側アプリが自動変換するなりすれば化けずに済むが。
0280デフォルトの名無しさん
2006/09/27(水) 02:00:43Emacsの内部は独自コード。
Emacs外とのやり取りでは外の事情に合わせた文字コードを使うことができる。
つまり変換する。
コピペはX11とのやりとりになるが、
X11はC-TEXT(compound text)を使う。
0281デフォルトの名無しさん
2006/09/27(水) 02:18:27280>>
なるほど。GUIやアプリ両方でやってるんですね。。。
勉強してきます。ありがとうございました。
0282デフォルトの名無しさん
2006/09/30(土) 07:44:48http://isotc.iso.org/livelink/livelink/fetch/2000/2489/Ittf_Home/PubliclyAvailableStandards.htm
U+29FCEの字形は古いままなのでAmendmentは含まれていない模様
0283デフォルトの名無しさん
2006/10/05(木) 11:31:53関数って、 libiconv 自体には用意されていますか?
0284デフォルトの名無しさん
2006/10/05(木) 11:40:110285デフォルトの名無しさん
2006/10/08(日) 07:33:00http://windowssdk.msdn.microsoft.com/en-us/library/ms776446.aspx
20000 x-Chinese_CNS CNS Taiwan; Chinese Traditional (CNS)
20002 x_Chinese-Eten Eten Taiwan; Chinese Traditional (Eten)
となっています。しかし .NET Framework 2.0 で各コードページについて
EncodingInfo.Name を取得すると上記はそれぞれ x-Chinese-CNS,
x-Chinese-Eten となり "_" と "-" が一致しません。いずれも
x- ですから IANA には登録されていません。エンコード名として
何が正しいのでしょうか?何に依拠すべきでしょうか?
0286デフォルトの名無しさん
2006/10/08(日) 09:26:16"x_"ではない。実際に取れるものも"x-"ならそれでいいんじゃないの。
0287デフォルトの名無しさん
2006/10/08(日) 10:21:040288デフォルトの名無しさん
2006/10/08(日) 13:37:26X-x_Chinese-Eten
としなければ仕方ないだろ。
0289デフォルトの名無しさん
2006/10/12(木) 11:23:10何を元にして生成されているんですか?
特に Linux (Debian GNU/Linux, Fedora Core 5) を想定しています。
iconv や ICU で受付可能な文字コード一覧と照合したいんですが、
ポータブルに書くために特定のマシンの locale -m の出力を
ハードコーディングすると言うことは避けたいと思っています。
0290デフォルトの名無しさん
2006/10/12(木) 11:59:18詳しくはlocaleコマンドのソース読め。
0291デフォルトの名無しさん
2006/10/12(木) 20:44:29どこのスレに行けばいいですか?
0292デフォルトの名無しさん
2006/10/13(金) 02:37:332chじゃなくてもいいならcppllにでも逝け。
0293デフォルトの名無しさん
2006/10/13(金) 12:24:40遠慮なくここで語ってくれたまえ。
0294デフォルトの名無しさん
2006/10/17(火) 03:56:06の環境で以下のソースをコンパイルして、ターミナルで実行しても
何も出力されません。
#include <iostream>
#include <locale>
using namespace std;
int main()
{
locale jp("japanese");
wstring str = L"漢字";
wcout.imbue(jp);
wcout << str << endl;
return 0;
}
eucjpに変換された"漢字"が出力されるのかと思ったのですけど。
0295294
2006/10/17(火) 05:04:440296デフォルトの名無しさん
2006/10/17(火) 05:36:40Windowsばかり使ってるとwchar_t=Unicodeと思い込みがちだけど
0297デフォルトの名無しさん
2006/10/17(火) 14:41:14確かに、Vine3.2は未だ内部コードにEUCJPを使っています。
それは私も知っていました。
しかし、wchar_tがUCS2(もしくはUTF16)でないとは。
今までASCIIしか使っていなかったので知りませんでした。
仕様ではwchar_tが2バイト文字だとしか言及されていないのですね。
扱いづらいような・・・・・。
0298デフォルトの名無しさん
2006/10/17(火) 16:04:060299デフォルトの名無しさん
2006/10/17(火) 18:31:44wchar_tが2バイトということすら規定されていない。
いずれかの整数型と等しいと規定されているだけ。
現実にはUTF-16かUTF-32(或いはUCS2/UCS4)の実装が多いと俺は思っているけど。
0300デフォルトの名無しさん
2006/10/17(火) 20:22:48最近はLinuxもUTF-8ロケールが増えつつあるしおおむねそういう手抜きができるように
なってきたと思うけど一昔前の日本語UNIX環境ではまったく正しくなかった。
ちなみにUCSであることを保証したければ__STDC_ISO_10646__というマクロがある。
0301297
2006/10/17(火) 22:53:36そういえば以前にD言語をいじったときに知ったのでした。
それにしても、wstring::findの返り値も実装ごとに違うよ
うですし、ワイド文字の扱いって大変そうですね。
指針がないかちょっと調べてみます。
もし参考になるサイト等ございましたら教えて頂ければ幸
いです。
0302297
2006/10/17(火) 23:12:24http://eside.homeip.net/columns/i18n.html
プラットフォームの違いを吸収するような方法は無いということですか。
古い記事ですが。
0303デフォルトの名無しさん
2006/10/20(金) 12:06:10libstdc++はimbueに対応していないっぽい。
代わりに大域ロケールをセットすれば良い。
それから、"japanese"というロケールは普通ないので、
"ja_JP.eucJP"とか""とかを使う。
#include <iostream>
#include <locale>
using namespace std;
int main()
{
locale::global(locale(""));
wstring str = L"漢字";
wcout << str << endl;
return 0;
}
0304デフォルトの名無しさん
2006/10/20(金) 12:40:560305デフォルトの名無しさん
2006/10/20(金) 20:16:14ワイドキャラ=UCS2&UTF-16のBMPでいいんだっけ?
0306デフォルトの名無しさん
2006/10/20(金) 20:25:53WindowsではUTF-16だしglibcではUTF-32(UCS-4だったか?)。
0307デフォルトの名無しさん
2006/10/20(金) 23:12:010308デフォルトの名無しさん
2006/10/20(金) 23:16:36>>299
C/C++のwchar_tはいずれかの整数型と互換であるということが定められているだけ。
0309デフォルトの名無しさん
2006/10/20(金) 23:33:46定められてないとまずいよね?じゃないとisalphaとかの実装は文字コードに
依存してるからまずそうだし。
つーと当面はWinのワイドキャラ=UTF-16、Linuxのワイドキャラ=UTF-32
で想定してればOK?
でも、Linux上でUTF-16のisalphaみたいなのは変換するか、実装するかしか
ないということか。。
0310デフォルトの名無しさん
2006/10/20(金) 23:40:41wchar_tの中身のエンコーディングが何であるかは
処理系が知っていればいいことであって、
プログラマが関知すべきことではない。
wchar_tのエンコーディングに依存するコードは
書くべきではない。原則的にはな。
実用上はWindows:UTF-16、Linux:UTF-32と考えてまあよし。
0311デフォルトの名無しさん
2006/10/20(金) 23:41:120312デフォルトの名無しさん
2006/10/21(土) 00:36:58うーん、そしたらさ、isalphaはAsciiコードに依存してるのと同じで
iswalphaはUTF-16というコードに依存してる(Winの場合)ということにならない?
0313デフォルトの名無しさん
2006/10/21(土) 00:51:09iswalphaの実装は文字コードに依存していてもいいじゃん。
Cランタイムライブラリの一部なんだから。
プログラマが、wchar_tで使われている文字コードを仮定した
コードを書くべきでないということ。
0314デフォルトの名無しさん
2006/10/21(土) 01:25:02Winでwchar_tが将来4バイトに拡張されたときにもプログラムは正しく
動くことが理想ってことだよね。
そうすると、UTF-16のファイルをwchar_tに収めるってのもまずいことになる?
あれ、なんかよくわかんなくなってきたな。
0315デフォルトの名無しさん
2006/10/21(土) 01:30:16何が正しいことになるんだ?wchar_tのサイズが未定義ってのが問題なのかな。
なんとなくchar*で持って、結局is系とかは自前で実装というはめになりそう
な気がするが。。
0316デフォルトの名無しさん
2006/10/21(土) 05:17:55何の略で
あんな
名前?
0317デフォルトの名無しさん
2006/10/21(土) 05:39:59FreeBSDは今でもCoding System Independentな実装になってるな
>>315
処理系依存の方法しかない。
>>316
略語じゃなくて染める、吹き込むという意味の英単語
0318デフォルトの名無しさん
2006/10/21(土) 09:15:44char_xp とかUTFVista とかつけとけばよかったんだ。
0319デフォルトの名無しさん
2006/10/21(土) 10:17:34何だその無駄に重たそうな名前は(w
0320デフォルトの名無しさん
2006/10/21(土) 11:14:180321デフォルトの名無しさん
2006/10/21(土) 11:31:00馬鹿
0322デフォルトの名無しさん
2006/10/21(土) 12:37:04それが理想なんだけど、実際はそうなっていない。
whar_tの表現は内部エンコーディング(プログラムの実行中にその内部処理用と
してだけ使われるべきもの)であるべきだけど、コンパイラが生成する
オブジェクトファイルがwchar_tの表現に依存してしまっているので、
外部に露出してしまっている。
それはオブジェクトファイル内のワイド文字列リテラルのエンコーディングも
そうだし、プログラム内でwchar_tを直接触る部分もやはりwchar_tのサイズに
依存したコードにコンパイルされるというのもある。
これを防ぐにはワイド文字・ワイド文字列へのアクセスを全てAPI経由にし
文字列リテラルも、UTF-8等の外部エンコーディングで入れておいて
プログラムの初回参照時に変換するようにしていれば、
将来の拡張や変更にも耐えられたんだけど。
今から見ればどうってことない方式だけど、当時、しかもC言語の人間に
とってはコスト過多に思えて採用しがたかったかも。
せめてwchar_tが十分大きければwchar_tを直接触るのを許してもエンコーディング
の変更や拡張に耐えられたけど、2byteじゃやはり駄目だね。
>>317
しかしgccがFreeBSDやNetBSDのwchar_t表現に(たしか)対応していない罠……
0323デフォルトの名無しさん
2006/10/21(土) 12:49:19ワイド文字は幻想だったのさ。
0324デフォルトの名無しさん
2006/10/21(土) 13:36:37> そうだし、
ソースファイルのエンコーディングと処理系が扱うエンコーディングは
別じゃなかったっけ? 少なくとも仕様上は。
> wchar_tのサイズに依存した
サイズに依存しちゃいけないのはwchar_tに限った話じゃないような。
C99ではサイズを明示した整数型が追加されたけど。
> もうchar*にUTF-8入れとけばいいよ。
しかしWindowsが対応してない罠
0325デフォルトの名無しさん
2006/10/21(土) 20:34:42ソースコードじゃなくてコンパイラが作るオブジェクトファイルの話なんだけど。
0326デフォルトの名無しさん
2006/10/21(土) 20:35:380327デフォルトの名無しさん
2006/10/21(土) 20:41:27API呼ぶ時に変換しなきゃいけないだろうけど
0328デフォルトの名無しさん
2006/10/21(土) 21:47:30内部表現は UCS-4、外部表現は UTF8 ってのが普及して欲しい
んで、適宜 SJIS や EUCJ への変換もサポートすると
0329デフォルトの名無しさん
2006/10/21(土) 21:55:02文字列の扱いについて考慮しとかないといかんよな。
後追いだと、Pythonのようにunicodeオブジェクトを導入するくらいしか
ないのでは。
0330デフォルトの名無しさん
2006/10/21(土) 22:23:050331デフォルトの名無しさん
2006/10/21(土) 23:06:02■ このスレッドは過去ログ倉庫に格納されています