2017-08-09 1 views
1

データベースから値を受け取る文字列sがあります。どのサーバーがデータベースであるかに応じて、値はUTF-8エンコーディングになるかどうかはわかりません。制御できません。文字列の値がJavaのUTF-8でない場合のみ

私の問題は、文字列sの値をでない場合にURLEncoder.encode(s, "UTF-8")と符号化する方法を見つける必要があることです。それ以外の場合は、いくつかの不要な文字が表示されます。

juniversalchardetを使用して値のエンコーディングを検出することはできません。 文字列の正しい値を取得し、必要なときにのみエンコードするようにするにはどうすればよいですか?

+0

'URLEncoder.encode(s、" UTF-8 ")その値がUTF-8でないとき'?ではないか – ByeBye

+3

値を 'String'として取得している場合は、すでに' UTF-16'としてメモリに内部的に格納されています。あなたの説明は間違っていて、あなたは間違った解決策に向かっています。すでにデータベースから値が破損している可能性があります。 – Kayaman

+0

@ByeByeはそうではありません。 –

答えて

1

%20(または一般的には%dd、ここでddは16進値00-FFです)を含むStringsの場合はURL Encodedです。一言で言えば、URL(と他の場所)のように安全に含まれていないかもしれない「安全でない」文字をエスケープします。それを逆にするには、URLDecoderを使用する必要があります。

いつものように文字変換を扱うときは、エンコーディングを指定する必要があります。 UTF-8が推奨されるので、何か別のものが必要であることがわかっていない限り、それを使用してください。

関連する問題