2009-03-10 4 views
1

Java StringをLatin-1(つまり、charset ISO-8859-1)にエンコードする場合、エンコードを実行する前にドイツ語のシンボルβ( '\ u03B2')をß( '\ u00DF')に変換しています。私は可能な限りエンコーディングで疑問符を避けるようにしています。StringをLatin-1としてエンコードする際の疑問符を最小限に抑えるにはどうすればよいですか?

誰もがエンコーディング可能な文字に置き換えられる他のエンコーディング不可能な文字を提案できますか?それとも、私のためのJavaライブラリである方がいいですか?

更新日: 背景:私はそれをデータをCSVファイルにエクスポートするJavaプログラムを持っているので、それらを第三者のアプリケーションに読み込むことができます。顧客は、一部の文字が変換されていないと訴えている - 彼は私に "straese"の例を与えた。技術的にはβはBetaのギリシャのシンボルですが、すばらしいGoogle検索ではかなりの人がβを意味するために使用しています。

+1

最初に絶対にISO-8859-1エンコーディングが必要な理由を教えてください。 –

答えて

1

まず入力テキストが正しく入力されているか、エンコードされていますか?

u + 03B2は、ドイツ語のeszettではなく、「GREEK SMALL LETTER BETA」です。

U + 00DFは、それがhttp://unicode.org/Public/MAPPINGS/ISO8859/8859-1.TXTで定義されているため、JavaがISO-8859-1に後者をマッピングすることができますエスツェットや "LATIN SMALL LETTERシャープS"

です。

この問題を一般的に解決する方法はありません.ISO-8859- *で表現できない文字(ロット)が含まれています。

http://unicode.org/Public/MAPPINGS/ISO8859/8859-1.TXT文書に記載されていないデータ内のすべてのユニコード文字のリストを作成することをお勧めします。マップされていないキャラクタごとに、ISO-8859-1の範囲から適切な置換を手書きで選択する必要があります。

+0

ありがとうございます。残念ながら私は自分のユーザーデータにアクセスすることはできませんので、ユーザーが不平を言うのを待ってから、正しい文字を使用するように勧めてください! – Mark

+0

組み込みのJava ISO-8859-1エンコーディングは、その両方がUTFから自動的に変換されないことに驚いています。 – ryandenki

1

U + 03B2はギリシャ文字「ベータ」です。 U + 00DFはドイツ語の「鋭い」です。本当に同じことではありません!ラテン文字が必要な場合は、Bの方がβに適していませんか?あなたのシナリオやユースケースに関する少しの背景が、適切な提案を導くのに役立ちます。

ユニコードには数千ものグリフがあり、そのうちのほんの数だけがLatin-1でエンコードできます。

関連する問題