1 名前:デフォルトの名無しさん [03/09/10 16:04] 文字コード変換について語りましょう♪
552 名前:デフォルトの名無しさん mailto:sage [04/03/14 14:28] 結局書き直しまくりだねぇ
553 名前:デフォルトの名無しさん mailto:sage [04/03/14 16:14] regexはcharacter classとcollation orderも扱うのだが、 何故UTF-8など修正無しでOKだと思ったんだろう。
554 名前:デフォルトの名無しさん mailto:sage [04/03/14 16:32] Perlなんかでも正規表現は漢字1文字が2バイトになるって分かって書いてきたからね。 そういう感覚を前提にしたら、検索で誤マッチしないだけで充分ってことでは。
555 名前:デフォルトの名無しさん mailto:sage [04/03/14 17:06] collationなんてやりだしたら修正どころじゃないな
556 名前:デフォルトの名無しさん mailto:sage [04/03/14 17:28] glibcのregex国際化 lc.linux.or.jp/lc2001/papers/dfa-i18n-paper.pdf lc.linux.or.jp/lc2002/papers/hasegawa0918h.pdf
557 名前:デフォルトの名無しさん mailto:sage [04/03/14 20:07] >上述の通り、我々の実装はDFA をベースとしている。 >このため、NFA ベースの実装では避けられないback tracking の問題 >が生じない。 NFAベースでもバックトラック無しの実装をアップしとるのに。 複数の状態変数のパラレルな遷移という例で。 >しかし、Single UnixSpecification[3] などの規格において、 >あるコードポイントに文字が割り当てられているかどう >かをエンコーディングから独立に調べる方法が用意されていない。 着眼点が悪い。 実は既に正規表現式から必要最小限な集合を抽出する方式がある。 つまり、入力値の範囲ではなく、パターン自体にその答えがある。 オーバーヘッド無し、むしろ従来より高性能な実装は可能。 と、ここで書いてみる。 どうせダウンロードとしてないんだろうな。 従来と違うアプローチの実装例をいくつも出したのに。
558 名前:デフォルトの名無しさん mailto:sage [04/03/15 00:10] >>554 いつの時代のperlの話だよ。.を1byteと見做すなんて。 PCRE is short for Perl Compatible Regular Expressions. www.regular-expressions.info/pcre.html
559 名前:デフォルトの名無しさん mailto:sage [04/03/15 00:15] それから、printf系がUTF-8で問題ないって言う人いるけど、 %c, %lcが全く駄目じゃん。範囲限定で使えないことはないレベル。
560 名前:デフォルトの名無しさん mailto:sage [04/03/15 00:34] 複数回 %c すればー、ということじゃない? 改変するとすれば、アドレス渡すようにしないといかんのかな。 そもそも文字リテラルの仕様をどうすればいいんだろうか?
561 名前:デフォルトの名無しさん mailto:sage [04/03/15 01:04] >>558 現状ではこの手のツールの漢字対応って大抵無理やり動かすパッチだけど。 ggrepの日本語対応パッチで比較回数が爆発したりとかするやつあったし。
562 名前:デフォルトの名無しさん mailto:sage [04/03/15 01:10] 漢字対応って一体何の話? ここはUnicodeのスレですよ? >>553 の言っていること理解できる?
563 名前:デフォルトの名無しさん mailto:sage [04/03/15 01:12] ああ、すまん、マルチバイト対応だ。打ち間違い。
564 名前:デフォルトの名無しさん mailto:sage [04/03/15 09:43] >>558 一般人にもっとも馴染みの深いプロバイダのおまけCGI環境だと今でも普通だが。
565 名前:デフォルトの名無しさん mailto:sage [04/03/15 09:49] >>559 さすがにそれは言いがかりだろ。 マルチバイトでcharに入らない時点でどう転んでも無理。 wchar_tでwprintf使ってなさいってこった。
566 名前:デフォルトの名無しさん mailto:sage [04/03/15 09:50] >>564 まさかそれが正しいことだと思ってるんじゃなかろうな・・・
567 名前:デフォルトの名無しさん mailto:sage [04/03/15 09:51] >>565 いや、だから>>559 は「どう転んでも無理」という話をしているのだが・・・
568 名前:デフォルトの名無しさん mailto:sage [04/03/15 09:55] >>564 その環境100%信頼してバッチジョブで 漢字ファイル名の自動リネームに使うとあぼーん。 Rubyも1.8になるまで不具合連発だったし、今でも警戒してる。
569 名前:デフォルトの名無しさん mailto:sage [04/03/15 10:00] そこはバッドノウハウで回避ですよ。
570 名前:デフォルトの名無しさん mailto:sage [04/03/15 10:06] バッドノウハウ? ちゃんと再設計すりゃいいじゃんか、アルゴリズムを変えて。 マルチバイトの対応は10年たっても20年たっても不完全。
571 名前:デフォルトの名無しさん mailto:sage [04/03/15 10:12] >>570 おつむの弱い人ですか? アルゴリズムて 誰がregexライブラリ設計の話してるの…
572 名前:デフォルトの名無しさん mailto:sage [04/03/15 11:16] >>571 551から554,556,558の流れなんだけど。
573 名前:デフォルトの名無しさん [04/03/15 14:51] 571はLightCone
574 名前:デフォルトの名無しさん mailto:sage [04/03/15 21:00] 彼は名無しで煽らないよ。
575 名前:デフォルトの名無しさん mailto:sage [04/03/15 22:12] いやぁ、ときたま名無しのLightConeがまぎれているような気がするんだが。 なぁ、>>574
576 名前:デフォルトの名無しさん mailto:sage [04/03/16 01:28] >>562 誰も突っ込んでないようだが、 このスレは別に Unicode のスレじゃない。
577 名前:デフォルトの名無しさん mailto:sage [04/03/16 02:12] 文字コード総合スレあった方が良かったかな? 僅かな需要はあるのかも。
578 名前:Shift_JIS mailto:sage [04/03/16 02:24] 私の頃忘れないで… 古い欠点ばかりの女とお思いでしょう。けどわたし…(モジモジ
579 名前:デフォルトの名無しさん [04/03/16 07:59] UTF8とSJISのスレだと勘違いされてもしかたないタイトルだな。
580 名前:デフォルトの名無しさん mailto:sage [04/03/16 15:43] java厨ならその2つだけでなんとかなるからな
581 名前:デフォルトの名無しさん mailto:sage [04/03/16 23:12] なるかボケ
582 名前:デフォルトの名無しさん [04/03/16 23:52] 質問です。 VBscriptでUTF8からSJISに変換という 関数や方法はあるのでしょうか。
583 名前:デフォルトの名無しさん mailto:sage [04/03/17 01:00] >582 ふつーに変換DLLをインポートできねーの?サーバサイドだよね?
584 名前:デフォルトの名無しさん [04/03/18 00:11] できれば、VBscript内で行いたいです。 そのVBscriptファイルををダブルクリックすると 指定したUTF8のファイルを読み込み、SJISに変換したものを 別ファイルとして吐き出す っていうのを作りたいのです。
585 名前:デフォルトの名無しさん mailto:sage [04/03/18 00:42] んー、UTF8からUCS2への変換はふつーに書けるよね。 UCS32からCP932への変換はAPI呼ぶとか自前でテーブル持つとかでできるね
586 名前:デフォルトの名無しさん [04/03/18 00:50] >>585 basp21 の「kconv」を使ってはみたのですが、どうもうまくいきません。 使い方間違っているのでしょうか・・
587 名前:デフォルトの名無しさん mailto:sage [04/03/18 03:00] UTF8 ─自前ルーチン→ UCS2 ─WideCharToMultiByte→ SJIS UTF8 → UCS2 www.linux.or.jp/JM/html/LDP_man-pages/man7/utf-8.7.html
588 名前:デフォルトの名無しさん [04/03/18 23:20] やはりこれってのはスレがたつほどなんで 文字コード知識ある人でも難しい問題なんですか? basp21でできそうだったんですが・・・できないものですね。
589 名前:デフォルトの名無しさん mailto:sage [04/03/18 23:40] ワラタ
590 名前:デフォルトの名無しさん mailto:sage [04/03/18 23:40] 普通の人でもある程度書けるけど正確さを目指すと規格の曖昧さで苦労する問題です。 588はもーちょっと修行すれ。もしくはちゃんとコードとエラー内容を出して質問すれ。
591 名前:デフォルトの名無しさん mailto:sage [04/03/19 11:21] >>587 WideCharToMultiByte使うなら、Win95での動作を想定しなくてよければ MultiByteToWideCharでUTF-8>UCS-2変換すればいいと思うが。
592 名前:デフォルトの名無しさん mailto:sage [04/03/19 12:36] MSLU入れてもその辺アップデートされないの?
593 名前:デフォルトの名無しさん mailto:sage [04/03/19 13:13] >>592 unicow.dll(だっけ?)をリンクしているアプリからしか使えない。 VBScriptからという条件じゃ無理
594 名前:デフォルトの名無しさん [04/03/19 22:04] すみません、全くの初心者なのですが、perl 5.8.2での質問です。 test.txtという、shift-jisで保存されたテキストファイルがあります。 (ファイル名も、置かれているディレクトリも常に同じ。) このファイルを、utf-8に変換したいのですが、やり方がわかりません。 いろんなサイトを参考にして、何種類かやり方があるようなことがわかり、 試しに、 use utf8; $input_filename ='C:\hoge\test.txt'; $output_filename ='C:\hoge\test.txt'; open my $in,'<:encoding(shift_jis)',$input_filename or die "open $input_filename: $!\n"; open my $out,'>:encoding(utf8)',$output_filename or die "open $output_filename: $!\n"; while(<$in>){print $out $_; } close($in) or die "read $input_filename: $!\n"; close($out) or die "write $output_filename: $!\n"; という風に書いてみましたが、結果はtest.txtの中が空になるだけでした。 また、別のやり方として、 use utf8; $input_filename ='C:\hoge\test.txt'; $output_filename ='C:\hoge\test.txt'; use Encode qw(from_to); open my $in, "<", $input_filename or die; open my $out, ">", $output_filename or die; while(<$in>){ from_to($_, "shift_jis", "utf8"); print $out $_; } という風なやり方も試してみましたが、結果は同じでした。 どこがいけないのでしょうか? どなたか詳しい方、よろしくお願いします。
595 名前:デフォルトの名無しさん mailto:sage [04/03/19 22:53] perlは門外漢なんだが、入力と出力が同じファイル名でいいの? ファイルが空になるような。
596 名前:デフォルトの名無しさん mailto:sage [04/03/19 23:01] windowsだと確実にダメなはず。出力を開いた時点でファイルサイズが0になる。
597 名前:デフォルトの名無しさん [04/03/20 01:24] 結局のところ UTF8→ShiftSJIS 直変換は無理ってこと?
598 名前:デフォルトの名無しさん [04/03/20 01:25] BASP使っては無理?
599 名前:デフォルトの名無しさん mailto:sage [04/03/20 02:24] 結局変換コード自前で書いたとしても、 UTF8 から UCS2 のコードを求めて それを SJIS に変換するってコードを書くことになるしな。 まぁ、1文字1文字変換した方が 余計なバッファが要らない分効率はいいかとは思うけど、 変換に MultiByteToWideChar/WideCharToMultiByte を使うと 呼び出しコストが高そうなので、全部自前で組まないと意味が無いかも。 ただ、使用言語が VBScript なので、ひょっとしたらひょっとするかも?
600 名前:デフォルトの名無しさん mailto:sage [04/03/20 06:22] ShiftSJIS 。 ムリでもなんでもねーよ。てめーがヘタなだけだ
601 名前:594 [04/03/20 08:57] 594です。 無理なのでしょうか?できるのでしょうか? perlのスレとかに行ったほうがわかるのでしょうか?
602 名前:デフォルトの名無しさん mailto:sage [04/03/20 09:59] >601 inとoutで開くファイル名変えれ。それだけだ。
603 名前:デフォルトの名無しさん [04/03/20 13:08] 簡単に変換する方法ないですか?
604 名前:デフォルトの名無しさん mailto:sage [04/03/20 13:34] つかお前誰だ
605 名前:デフォルトの名無しさん [04/03/20 22:01] www.vector.co.jp/soft/win95/util/se314832.html これを元に、なんとかできないかな
606 名前:デフォルトの名無しさん mailto:sage [04/03/20 22:21] パイナリファイル
607 名前:デフォルトの名無しさん mailto:sage [04/03/24 00:06] JISの半角カナなんだけどさ ESCJ と shift-out と 7bit が続く場合と ESC I の後に 7bitが続く場合は ASCII扱いでOK? 7bitの場合で他(というとESC I +shift-out+7bitのことだが)はX201扱いでOK?
608 名前:デフォルトの名無しさん mailto:sage [04/03/24 00:50] やや意味不明。ESC J って、ESC ( J のことか? そうだとして、SO の後は G1 に何が入っているかによる。 日本ではX0202の右側を入れることが多いかな。 ESC ( I の後は X0201右側が G0 に designate されているから、 7bitならX0201右側しかない。 「7bitの場合で他」って、なんで一通りに決まる? ESC ( I SO の後は、最初の場合と同じで G1 に何が入っているかによる。
609 名前:デフォルトの名無しさん mailto:sage [04/03/24 00:52] ↑のX0202はX0201のことな
610 名前:デフォルトの名無しさん mailto:sage [04/03/24 01:02] JIS の半角カナって、M$ の仕様拡張じゃなかった?
611 名前:デフォルトの名無しさん mailto:sage [04/03/24 01:13] おまえはこのスレにいる資格なし
612 名前:デフォルトの名無しさん mailto:sage [04/03/24 09:27] いまどきこんなDQNエンコード使ってるほうが悪いんだよ
613 名前:デフォルトの名無しさん mailto:sage [04/03/24 09:50] >>608 X0201右側って何? 片仮名用図形文字集合のこと?
614 名前:デフォルトの名無しさん mailto:sage [04/03/24 10:06] > ESC ( I の後は X0201右側が G0 に designate されているから、 > 7bitならX0201右側しかない。 これ以前にG1〜G3がGLに呼び出されていれば そこに何が入っているかによる。 ESC 2/8 FでG0に何が指示されようと関係ない。 (一意な符号化が要求されている場合は使用可能な文字が 変わるかもしれないけど)
615 名前:デフォルトの名無しさん mailto:sage [04/03/24 10:18] >>614 > これ以前にG1〜G3がGLに呼び出されていれば > そこに何が入っているかによる。 そうだった。SOとかLS2/LS3が先行してる場合があるか。 >>613 そのつもり。
616 名前:デフォルトの名無しさん mailto:sage [04/03/24 10:26] >>615 7bitで「右側」という表現に違和感を感じたので。 確かにX0201に規定されている8ビット符号は片仮名をGRに 呼び出すものしかないけど
617 名前:デフォルトの名無しさん mailto:sage [04/03/24 22:29] >612 悪いな。IRC関連なんだよ
618 名前:デフォルトの名無しさん mailto:sage [04/03/29 10:48] IRCの日本語文字コードってISO-2022-JPじゃなかったっけ?
619 名前:デフォルトの名無しさん [04/03/30 01:46] age
620 名前:デフォルトの名無しさん [04/05/05 19:26] BOMありUTF-8などというばかげたものが禁止されていないのはなぜですか?
621 名前:デフォルトの名無しさん [04/05/05 20:13] >>620 UTF-8を自動識別できるから(w ASCII/ANSI互換がメリットなのだから、BOMは付けるべきではないというのが 一般論。でも付けて違反とはISO 10646にもRFCにも規定はないですね Use caseによるんじゃないですか? XMLやHTMLなら、encodingパラメータでコードセットを取得できるので不要、 でもそうでないものやencoding指定が無い場合は識別方法が7fhコードが 含まれているかとかあやふやな、確実に特定する手段無いし・・・ それはS-JIS、GB 2312、Big5、KS C5601(KS X1001)、CNS 11643等でも 同様ですが
622 名前:デフォルトの名無しさん mailto:sage [04/05/05 20:14] >>620 Byte Order Mark の何たるかをご存知でない お間抜けちゃんがこの業界を仕切っているからでぬるぽ。
623 名前:デフォルトの名無しさん mailto:sage [04/05/05 22:54] いきなりレベルの低い話になりますが、〜問題は皆どうやって 回避してますか?
624 名前:デフォルトの名無しさん mailto:sage [04/05/06 07:38] ~→〜のこと?
625 名前:デフォルトの名無しさん mailto:sage [04/05/06 07:59] WAVE DASH(〜)が\u301cにマッピングされる問題でしょ。
626 名前:625 mailto:sage [04/05/06 08:02] 失礼、「U+301C」の方が良いですね。
627 名前:デフォルトの名無しさん mailto:sage [04/05/06 10:13] iconvもglibcも使うときはSJISじゃなくてCP932を指定してる。 emacsもCP932変換テーブルを作って、さらにutf-8 decode部分を書き換え。 実際どうなんだろう、SJISが必要な人って、どれぐらいいるんだろう? 大部分の人はCP932が欲しいわけで、SJISじゃないと思うのだけど、 そうでもない?
628 名前:デフォルトの名無しさん mailto:sage [04/05/06 11:28] >>621 > でも付けて違反とはISO 10646にもRFCにも規定はないですね どういう場合に付けてはいけないか(というか付いてたときZWNBSP ではなくBOMであると解釈してはいけないか)はRFC 3629で 明確化された
629 名前:デフォルトの名無しさん mailto:sage [04/05/06 13:54] >>627 Unicode→SJISで、「どっちが来てもいいように」対応することは可能だけど SJIS→Unicodeだと、どっちにするか決めないといけない という問題がありますね。 それと、OracleのNLSのような、ハック不可能な領域だとかなりどうしようも ない気が。 そういえば、JavaはもうShift_JISがWINDOWS-31JじゃなくてSJISのエイリアス になってるんでしたっけ。これ、困る人が多いんじゃないのかなあ。
630 名前:デフォルトの名無しさん mailto:sage [04/05/06 16:46] > Unicode→SJISで、「どっちが来てもいいように」対応することは可能だけど U+005CとかU+007Eが来たときどう変換する? Shift_JISがX0208の附属書1どおりじゃなくて 1バイト部分はASCIIであるとみなせば対応は可能だけど
631 名前:デフォルトの名無しさん mailto:sage [04/05/06 20:09] >>630 実際問題として、ASCIIと見なさないと、使い物にならないでしょう。 \にどういうグリフが当てられていようと、日本人もそれをエスケープ記号や パスのデリミタとして(バックスラッシュと同じ意味で)使っているんだから、 他のコードポイント割り当てたら、はっきり言って実用上はお話にならない。 従来通りFontの問題として対応するのが「今のところは」現実的じゃないの。
632 名前:デフォルトの名無しさん mailto:sage [04/05/06 23:53] エスケープ記号はともかくパスのデリミタはWindowsの場合だから それは単にエンコーディングとしてCP932を想定しているというだけの 話だと思うんだけど。 実際Appleの変換表は円記号をU+00A5に割り当てるし
633 名前:デフォルトの名無しさん mailto:sage [04/05/07 00:26] そのエスケープ記号が大問題だと思うが。 世の多くのプログラミング言語だのTeXだのシェルだのにおいて メタキャラクタとして使われてるんだから。既存のソースの類が突然にして コンパイル不能な屑の山になるでしょ。 無論DOS, Windowsユーザにとっちゃパス区切りであることの方が さらに問題だが。
634 名前:デフォルトの名無しさん mailto:sage [04/05/07 03:27] >>631 そりゃ、プログラマ至上主義だね。 普通の文書に半角円記号使ってた人は困る。
635 名前:デフォルトの名無しさん mailto:sage [04/05/07 08:16] >>634 そしてTerminal上でバックスラッシュと円記号の混乱でうめき、SafariでWebの円記号がバックスラ ッシュになってもがくOSXユーザが湧いてでてくると。
636 名前:デフォルトの名無しさん mailto:sage [04/05/07 09:14] >>632 Mac OS Xだと、Shift JISのprogramを、 UTF-8で保存して、REVERSE SOLIDUS(0x5c)のつもりが、 YEN SIGN(0xa5)になって悩んでいる学生さんが、 既にいらっしゃいますよ。 Terminal.appで、YEN SIGNが出力されていても、(\nとか) 教科書にYEN SIGN書いてあんだもん、初級の人はわけが分からないよね。
637 名前:デフォルトの名無しさん mailto:sage [04/05/07 09:48] Safariの ~ が 〜 になっちゃうよ問題とか。
638 名前:デフォルトの名無しさん mailto:sage [04/05/07 09:53] 「どっちが来てもいいように」対応するというのも そんな簡単じゃない。 たとえばPARALLEL TOとDOUBLE VERTICAL LINEしか違わない 名前のファイルが同じディレクトリにあると、どちらか片方しか 開けないとかどっちが開かれるかわからないとか、 どっちが作成されるか分からないとか。 そもそも両者を同一視したいというのは日本だけの都合であって、 たとえばGBKには両方とも存在するから勝手に同一視されたら 多分困る。
639 名前:デフォルトの名無しさん mailto:sage [04/05/07 12:57] <item1 name="セーター" price="\500" image="c:\image\item1.jpg"> みたいなのをきちんと utf-8 にする処理は多言語対応では難しいよね・・・
640 名前:デフォルトの名無しさん mailto:sage [04/05/07 13:15] >>639 > <item1 name="セーター" price="\500" image="c:\image\item1.jpg"> と記述するcoding systemがyenとbackslashを区別できていれば問題ないし、 区別できていないのなら、それはコード変換とは別ドメインの問題だろ。
641 名前:デフォルトの名無しさん mailto:sage [04/05/07 13:24] 見た感じXMLっぽいがそれなら price="¥500" と書くことで曖昧さがなくなる
642 名前:デフォルトの名無しさん mailto:sage [04/05/07 13:33] >>640 Shift_JISは問題ないの?
643 名前:デフォルトの名無しさん mailto:sage [04/05/07 16:13] >>641 xml 的には後半の \ は ¥ にするや否や、というような話。スレ違いだけど。 >>640 元のコードが Shift_JIS の場合、どんな風に変換されるべき?
644 名前:デフォルトの名無しさん mailto:sage [04/05/07 16:56] >>643 後半はしたら駄目に決まってる
645 名前:デフォルトの名無しさん mailto:sage [04/05/08 04:06] ところがShift JISで書いた場合は、両方でOKなわけだ。
646 名前:デフォルトの名無しさん mailto:sage [04/05/08 04:07] 両方HALFWIDTH YEN SIGNでOKなわけだ。
647 名前:デフォルトの名無しさん mailto:sage [04/05/08 09:10] >>645 意味がわからん 「両方」って何と何のことで何が「OK」なの? >>646 HALFWIDTH YEN SIGNなんてものはない ただのYEN SIGNならある
648 名前:デフォルトの名無しさん [04/05/09 05:04] LightConeは?
649 名前:デフォルトの名無しさん mailto:sage [04/05/09 20:00] >>648 LightCone乙
650 名前:デフォルトの名無しさん [04/05/18 10:46] 書き込みがないな。 またLightConeが来てくれないかな。
651 名前:デフォルトの名無しさん [04/05/18 18:31] iso-8859-22って、いわゆるなに? iso-8859-1って、いわゆるLatin1でいいの?
652 名前:デフォルトの名無しさん mailto:sage [04/05/19 02:37] 8859-22 なんてあったのか? 16までなら聞いたことがあるが。