8

UTF-8 文字セットに属する文字列 "\\u003c" があります。二重のバックスラッシュが存在するため、ユニコードにデコードできません。「\\u003c」から「\u003c」を取得するにはどうすればよいですか? 私はジャバを使用しています。

私は、

myString.replace("\\\\", "\\");

しかし、私が望んでいたことを達成できませんでした。

これは私のコードです、

String myString = FileUtils.readFileToString(file);
String a = myString.replace("\\\\", "\\");
byte[] utf8 = a.getBytes();

// Convert from UTF-8 to Unicode
a = new String(utf8, "UTF-8");
System.out.println("Converted string is:"+a);

ファイルの内容は

\u003c

4

7 に答える 7

6

問題の解決策をまだ探しているかどうかはわかりませんが(受け入れられた回答があるため)、記載されている問題の可能な解決策として私の回答を追加します:

String str = "\\u003c";
Matcher m = Pattern.compile("(?i)\\\\u([\\da-f]{4})").matcher(str);
if (m.find()) {
    String a = String.valueOf((char) Integer.parseInt(m.group(1), 16));
    System.out.printf("Unicode String is: [%s]%n", a);
}

出力:

Unicode String is: [<]

Here is online demo of the above code

于 2012-06-13T15:41:34.220 に答える
0

"\\u003c"'UTF-8文字セットに属していません'。これは、5つのUTF-8文字です:' \'、 '0'、 '0'、 '3'、および'c'。ここでの本当の問題は、なぜ二重の円記号があるのか​​ということです。または、彼ら本当にそこにいますか?あなたの問題はおそらく完全に違うものですか?文字列"\\u003c"がソースコードに含まれている場合、実行時に二重の円記号はまったく含まれていません。問題が何であれ、二重の円記号が存在する場合のデコードには関係ありません。

于 2012-06-13T10:26:56.973 に答える
0

これは、二重のバック スラッシュを単一のバック スラッシュに置き換えるためのものです。

public static void main(String args[])
{
      String str = "\\u003c";
      str= str.replaceAll("\\\\", "\\\\");

      System.out.println(str);
}
于 2012-06-13T09:55:01.240 に答える