2011-12-16 24 views
1

ElasticSearchは、UTF8でのみデータを受け入れる検索サーバーです。インターネットから入手したテキストのUTF8変換

私は軽いレポーティング負荷の行で、潜在的にテキスト

中小企業以下ElasticSearchを与えることを試みる未満£44万の年間売上高を持つもの、未満£220,000純資産及びより少ないが含まれます従業員10人、」私のJavaアプリケーションを介して

- 基本的に私のJavaアプリケーションは、Webページからこの情報を取得し、elasticSearchに与えるESの苦情それは£を理解カント、それが失敗したコードの下に通して濾過した後 - 。。

byte bytes[] = s.getBytes("ISO-8859-1"); 
s = new String(bytes, "UTF-8"); 

ここ£

に変換しかし、私はbashのを使って自分のホームディレクトリ内のファイルにコピーしたときに、それは罰金に移行します。任意のポインタが役立ちます。

+3

http://xkcd.com/138/ –

+1

@VineethMohanなぜあなたは '' GetBytesメソッド( "ISO-8859-1")を使用していますか?あなたはUTF-8で作業する必要があると思いましたか? – buruzaemon

+0

私はベースコードを識別する必要があります。私はISO-8859-1としてテキストのエンコーディングを想定しています –

答えて

3

bytesにはISO-8895-1オクテットがあり、StringにはUTF-8のようにデコードするよう指示します。それを行うと、不正な0xA3シーケンスは認識されず、置換文字に置き換えられます。

これを行うには、使用するエンコーディングで文字列を作成し、次にそれを必要なエンコーディングに変換する必要があります。 How do I convert between ISO-8859-1 and UTF-8 in Java?を参照してください。

0

UTF-8は1つの考えよりも簡単です。 Stringでは、すべてがUnicode文字です。 バイト/文字列変換は次のように行われます。 (CP1252またはWindows-1252はISO-8859-1のWindowsのLatin1の拡張であることに注意してください。より良い使用 1という。)

BufferedReader in = new BufferedReader(
     new InputStreamReader(new FileInputStream(file), "Cp1252")); 
PrintWriter out = new PrintWriter(
     new OutputStreamWriter(new FileOutputStream(file), "UTF-8")); 
response.setContentType("text/html; charset=UTF-8"); 
response.setEncoding("UTF-8"); 
String s = "20 \u00A3"; // Escaping 

をCP1252はISO-8859-1よりも適している理由を確認するには: http://en.wikipedia.org/wiki/Windows-1252

-1

文字列は、基本的に文字エンコーディングとは無関係の一連の文字です(完全に独立しているわけではありませんが、私たちのニーズに十分近づいています)。データをStringにロードしたときのデータのエンコードは、すでにデコードされています。デコードは、システムのデフォルトエンコーディング(実際には常にエラーが発生しています。システムのデフォルトエンコーディングを使用しないでください。間違ったデフォルトエンコーディングに関連したバグを扱った経験が10年以上あります)または明示的に指定したエンコーディングあなたがデータをロードしたとき。

Stringに対してgetBytes( "ISO-8859-1")を呼び出すときに、StringがISO-8859-1エンコーディングに従ってバイトにエンコードされるように要求します。

バイト配列から文字列を作成する場合は、バイト配列の文字が表示されるエンコードを指定する必要があります。 UTF-8でエンコードされたバイト配列から文字列を作成します(ISO-8859-1でエンコードした文字列の直上、つまりエラーです)。あなたが何をしたいか

は次のとおりです。

byte bytes[] = s.getBytes("UTF-8"); 
s = new String(bytes, "UTF-8"); 
関連する問題