【有志】P2P文字化け対策委員会【募集】
■ このスレッドは過去ログ倉庫に格納されています
0001委員会下っ端
02/11/26 23:23ID:MH9Z8XsK直すべくがんがる為のスレ
ダイナミックコンポジッションの仕様から生まれる問題で、
日本のJava開発者とともに対応策練らないといけません。
対策をしっかりした上で、開発者に連絡しないといけません。
協力者を切に募集します。
0002名称未設定
02/11/26 23:24ID:MH9Z8XsK586 :文字化け対策有志募集 :02/11/25 23:49
文字化けコード変換表を手分けして作りませんか。
やり方は以下の通りです。
テキストエディット
ば=は゛
び=ひ゛
完成したらUTF-8エンコーディングで保存
プログラマでなくとも参加できます。
590 :名称未設定 :02/11/26 10:49
ありがとうございます。
できるだけ完全な対応表を作りたいので、記号等も含まれます。
実際にXNapで化ける恐れのあるファイル名を共有しながら
相互に確認しあうことも必要かと思います。
XNapの開発者に送るだけでは不十分で、英文で不具合の詳細と、
変換表の利用方法を詳しく説明できなければなりません。
この掲示板を利用して話し合って変換方法を決めませんか
594 :文字組 :02/11/26 18:34
一気に斜め読みしたので、外していたらゴメンナサイm(_ _)m
正規表現で置換できるツールなら一度に分解することができるのでは?
下記は、正規表現での置換コマンドです。こんなんではダメですか?
後半の半角文字にする部分は不要かも知れませんが…
# 濁点、半濁点付きの文字を分解しておく
s/\([ガギグゲゴザジズゼゾダヂヅデドバビブベボヴ]\)/\1゛/g
s/\([パピプペポ]\)/\1゜/g
0003名称未設定
02/11/26 23:25ID:MH9Z8XsK当方Javaプログラムの知識は皆無でその書式がどういった働きをするのか想像できませんが、
これは、一番シンプルに変換できるいい方法なのですね。
できれば、変換処理用のソースコードのサンプルを上げていただけないでしょうか。
宜しくお願いします。
599 :文字組 :02/11/26 19:00
>>596
>>594 で上げたサンプル(事例)は、SEDと呼ばれるツールに添付
される変換フィルタの抜粋です。古いソフトなので所在は今判りま
せんが、下記にドキュメント(抜粋)を転載します。私自身はプロ
グラミングの知識はありませんので、ソースファイル云々について
は???です。ゴメンナサイ。
-- 以下、転載 --
●移植性
このツールは、BSD 4.1のUNIX上のsedから設計したもので、(作者の知識
の範囲とテストから決定したところによれば)UNIX BSD 4.1とコンパチブル
です。さらに、ドキュメントに記述されている点はすべてサポートしていま
す。
(中略)
●ノート
これはGNUオペレーティングシステムのフリーウェアです。これによってユ
ーザーは、以下の条件に従って、使用・改造・コピー・配布することができ
ます。
1.各ソースファイルにある作者の注意書き等を変更したり削除した
りしてはならない。
2.ソースなしでオブジェクトだけを配布してはならない。
(中略)
●参考
ed(1), grep(1), awk(1), lex(1), regexp(5)
0004名称未設定
02/11/26 23:26ID:MH9Z8XsK>>599
ありがとうございました。
検索してみたところSEDは外部プログラムのようですね。
これですと残念ながらJavaのXNapには適応できなさそうです。
603 :文字組 :02/11/26 19:53
>>600
的を外していたらゴメンナサイ。CGIなどで利用される“Perl”などで
も正規表現はできますが、Javaの実行環境では、Perlなども外部
プログラムに相当するのですか?
…とすると、私の理解を超えてしまいます (^^;
604 :文字化け対策 :02/11/26 20:01
先ほどは失礼しました。
ご紹介になられたソフトは、変換表を吐き出すものなのでしょうか。
そうだとすれば、JavaだとかPerlだとかは関係ないですよね;;
605 :文字化け対策 :02/11/26 20:03
いま、思い出しました!ファイルローグ!
もしかしてこれのソースが見れれば幸せになれるかもです。
どなたかご存じありませんか。
0005名称未設定
02/11/26 23:31ID:MH9Z8XsK具体案その2
三バイトの文字を見つけたら、例の変換表に照らし合わせて2バイト文字として扱う機能
(ロケールと言語が日本語の場合)
610 名前:名称未設定 投稿日:02/11/26 23:04 ID:tDs6aEfl
具体案その3
具体案その2の機能をアップルスクリプトやら、簡単なプログラムやらを組んで実現する
611 名前:名称未設定 投稿日:02/11/26 23:07 ID:tDs6aEfl
具体案その4
ファイルローグに使われていた文字コード処理を利用する
0006名称未設定
02/11/26 23:42ID:tDs6aEflここにはUnicodeが格納されることになっています。
一般的には日本語など漢字を使う言語であっても
Unicodeの1つのコードは1文字に対応するということになっており、
その前提が正しいとするとcharにはキャラクタが格納されることになります。
文字を表すデータ型を言語仕様でサポートするということは、
テキスト処理を行ううえで非常に便利であるに違いありません。
0007名称未設定
02/11/26 23:43ID:tDs6aEflというのはUnicodeではダイナミックコンポジッション(dynamic composition)
という複数のコードで1つの文字を構成することが仕様として許されているからです。
そしてこのダイナミックコンポジッションは例外的な機能ではなく、
ヨーロッパ系の言語、インド系の言語では頻繁に用いられるものになっています。
また日本語であってもジェネラルパンクチュエーション(general punctuation)
という仕様によりダイナミックコンポジションとは無関係というわけでは
なくなっているのが頭の痛いところです。
0008名称未設定
02/11/26 23:43ID:tDs6aEflポイントだったはずであるchar=Unicode=文字という単純化は、
グローバルアプリケーションでは通用しなくなっています。
charに格納できるのはあくまでもUnicodeのコードであり、これは文字の部品にすぎないのです。
char=Unicodeではあるのですが、Unicode=文字でない以上char=文字ではないということです。
つまりグローバルアプリケーションでは文字は
charの配列またはStringに格納された複数のUnicodeとして扱うことになります。
0009名称未設定
02/11/26 23:44ID:tDs6aEfl国際化バージョンでは文字がStringに格納されるようになっていることに注目して下さい。
Unicodeのダイナミックコンポジッションに対応するためにはこのようにするしかありません。
public static void doSomethingPerCharacter(String string) {
BreakIterator boundary = BreakIterator.getCharacterInstance();
boundary.setText(string);
int start = boundary.first();
for (int end = boundary.next(); end != BreakIterator.DONE;
start = end, end = boundary.next()) {
String c = String.substring(start, end);
doSomething(c);
}
}
0010名称未設定
02/11/26 23:44ID:tDs6aEfl残念ながら日本語のフォントにもジェネラルパンクチュエーションが許されているものがあるため、
日本語の範囲でもchar=Unicode=文字ではありません。
たとえば'は'+濁点='ば'や'ひ'+'。'='ぴ'が日本語コードのジェネラルパンクチュエーションの例です。
現時点ではあまりシビアに考える必要はないと思いますが、
厳密には日本語だけを使用するアプリケーションであっても前述の国際化の意識が必要であるということです。
0011名称未設定
02/11/26 23:45ID:MH9Z8XsK素人が協力できることって何ですか?
ファイルローグを拾ってくるのは役に立ちます?
0012名称未設定
02/11/26 23:49ID:tDs6aEfl何度インスコしても日本語にならないのですが。
298 :名称未設定 :02/11/23 14:00 ID:pwD8364i
シフテムフォルダ -> 初期設定 -> limewire -> limewire.props
COUNTRY=jp
LANGUAGE=ja
310 :名称未設定 :02/11/24 00:59 ID:Fp9yGF4u
>>309
例えばだけど、
http://www.vector.co.jp/soft/mac/util/se139948.html
をDLして[limewire.props]をテキストエディタで開けばいい。
SimpleTextだと改行なしでゴチャゴチャ見えるから、iTextなど持ってたら
そっちで開くとより見やすいだろう。
漏れの場合、「LANGUAGE=ja」ではあったがCOUNTRYの方は
「COUNTRY=」で改行されてて未定義(?)だったので、ちょっと不思議。
こっちをjpにしたら、もっと幸せになれるかしら。
(当方0S9.2.2でLime2.7.3、日本語化されてまつ)
0013名称未設定
02/11/26 23:51ID:tDs6aEflUNICODEのファイル名をJavaで引っこ抜くと、濁点のついた文字等が
3バイトコードになってしまうのですが、2バイトコードとして扱うには
どういった仕組みが必要になりますか。
宜しくご教授お願いいたします。
例
がぎぐげご -> か゛き゛く゛け゛こ゛
367 :名無しさん :02/11/26 21:42 ID:bS2KvpL1
>>366
文字化けしてるわけではない。UNICODEの仕様の一つです。
UNICODEをUNICODEのまま利用しない方がよいかもしれない。。
368 :名称未設定 :02/11/26 21:52 ID:tDs6aEfl
MacOS X のファイルフォーマットはUNICODEですよね。
それをJavaで取り込んだり、Swingのファイル選択のダイアログでみると
既に三バイト文字になっています。。。
これをShift-JISの文字列としてそのまま利用してしまうと2バイトと3バイトの差が出来て
不整合になってしまいます。
この二つを同期させたいのですが、、、
369 :名称未設定 :02/11/26 22:49 ID:dgStSSQa
Javaは内部処理はUNICODEなんだから、
出力時にsjisとして吐き出せばよい。
0014親切な人
02/11/26 23:52ID:3OBganvfヤフーオークションで、凄い人気商品、発見!!!
プランテック製の「 RX-2000�V 」を改造済み
にした、アイティーエス製の「 RX-2000�V 」↓
http://user.auctions.yahoo.co.jp/jp/user/neo_uuronntya#.2ch.net/
ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。
ヤフー ID の無い方は、下記のホームページから、
購入出来る様です↓
http://www.h5.dion.ne.jp/~gekitoku/#.2ch.net/
0015名称未設定
02/11/26 23:52ID:tDs6aEflそれだとローカル上ではファイルの入出力等、問題になりませんが
XNapはネットワークを通じてファイル名がISO-8859-1のエンコードとしてやり取りされています。
その際にJava内部のUNICODEの3バイトコードをISO-8859-1に変換すると
日本語の濁点が?になってしまうのです。
371 :名称未設定 :02/11/26 23:20 ID:tDs6aEfl
できるだけXNapのネットワークに文字を送信する前にShift-JISの2バイトコードに整えておく方法はありますでしょうか。
0016名称未設定
02/11/26 23:54ID:tDs6aEfl>>206
自力で置換。
211 :デフォルトの名無しさん :02/11/26 08:52
>>210
3バイトコードを2バイトコードに変換したいのです。
どいうったアルゴリズムをとれば問題を回避できるか、、、
212 :デフォルトの名無しさん :02/11/26 12:18
行きは、UNICODEのファイル名をJavaで認識する際に
1文字ずつ区切って取り出す処理をかまして、バイトコードの長さを見る
そこで3バイトの長さのものだけを変換テーブルの処理にかける
そろった文字列をストリングに格納してISO-8859-1のバイトデーターとして
クライアントに送信するのはどうでしょうか。
帰りは、ISO-8859-1の生をそのまま表示(Shift-JIS表示)で
文字列をそのままUNICODEに照らし合わせれば、サーバーのファイル名と一致する、、、
はたしてそうなるでしょうか、、、
変換テーブルという処理がツギハギ的であまり美しくないということも。
すべて妄想の域をでません。どなたか助け舟を宜しくお願いします。
0017名称未設定
02/11/26 23:58ID:tDs6aEfl是非!
0018名称未設定
02/11/27 00:00ID:qwpmiyfg0019名称未設定
02/11/27 00:52ID:yTA3XKKU>>370-371
どうやってエンコードを変更しているのか分からないんだが、
OutputStreamWriter 使っても駄目だったってこと?
373 名前:名称未設定 :02/11/27 00:28 ID:yTA3XKKU
>>372
ソース内をOutputStreamWriterで検索してみましたが
XNapにはその構文は使われていませんでした。
実際にはどこの部分で使えばいいのでしょうか。
ソース
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/xnap/xnap2/xnap/
374 名前:名称未設定 :02/11/27 00:35 ID:SI+pZB1m
気になったので、調べてみた。
これが、ファイル名「がぎぐげご」をJavaで拾った時の文字コード
304b 3099 304d 3099 304f 3099 3051 3099 3053 3099
これは、Shift_JISのファイルに「がぎぐげご」と書いて、
それをJavaでUNICODEに変換かけた時の文字コード
304c 304e 3050 3052 3054
問題を解消するためには、コードを一つずつ調べて、
変換してやるしかないのでは。
例えば、304b 3099という文字を、304cに変換してやれば、
「か゛」ではなく、「が」になる。
0020名称未設定
02/11/27 02:35ID:0mwBv2I1久しぶりに目標に向かって探してみたけど、なかった(´・ω・`)ガッカリ・・・
ファイルサーチでもHL鯖でも見当たらず。
HLやってる方、行きつけの鯖にて探してくれると嬉しいです。
0021名称未設定
02/11/27 11:02ID:yTA3XKKUファイルローグなかなか見つかりません。
いかなりレアな代物になっていたんですね。(汗
0022名称未設定
02/11/28 01:12ID:l2FclJFD0023名称未設定
02/11/28 02:55ID:trAUIcv+どのファイル名が文字化けするか調べてもらえますか。
特に記号類
0024///lω・`)
02/11/28 09:25ID:jsDz8X3Zttp://osakattf.hp.infoseek.co.jp/
ベクターを見ていたら、こんなソフトを見つけました。
ttp://www.vector.co.jp/soft/mac/util/se133334.html
よけいな事だったら、ゆるしてちょ・・・
0025名称未設定
02/11/28 11:05ID:trAUIcv+http://euc.jp/i18n/ucsnote.ja.html
http://java.sun.com/j2se/1.4.1/docs/relnotes/features.html
http://www.java-conf.gr.jp/wg_bof/jpintro/report/971013/
http://support.microsoft.com/default.aspx?scid=kb;ja;JP170559
http://www.ingrid.org/java/i18n/unicode.html
http://www.unicode.org/unicode/standard/versions/Unicode3.0.html
0026名称未設定
02/11/28 15:37ID:HUoBw95/もう必要無いかと思いますが..
0027名称未設定
02/11/28 17:11ID:trAUIcv+if(text.length() == 0) return text;
StringBuffer buffer = new StringBuffer(text.length());
char pre;
for(int i=0; i<text.length(); i++)
char ch = text.charAt(i);
if(ch != 0){
if(ch == '゛'){
buffer.append((char)(pre + 1));
} else if(ch == '゜'){
buffer.append((char)(pre + 2));
} else {
buffer.append(pre);
}
}
pre = ch;
}
buffer.append(pre);
return buffer.toString();
}
このパッチは濁点と半濁点の二バイト文字が含まれていた場合に
濁点半濁点の文字を削除し、一文字目のバイトコードの値を書き換えるものです。
0028名称未設定
02/11/28 17:51ID:kgCIzfmrttp://hp.vector.co.jp/authors/VA017148/java/encoding.html
http://www.google.co.jp/search?q=java+%95%B6%8E%9A%83R%81%5B%83h%95%CF%8A%B7&ie=Shift_JIS&hl=ja&lr=
0029名称未設定
02/11/29 02:10ID:Q5QaGzQ/だいぶ進んできました。
皆さんありがとうございます。
一時的にファイルローグのソースの募集と、変換リストの作成を中断させていただきます。
0030名称未設定
02/11/30 02:29ID:ljzuDMFy//*終了*//
■ このスレッドは過去ログ倉庫に格納されています