2

次のように、データベースに保存された文字列に問題があります"311\315_316\336_337"。バックスラッシュは 1 つしかなく、これは Java の問題です。s.replaceAll("\", "\\")Javaコンパイラが文字列"311\315_316\336_337""311Í_316Þ_337".

また、エンコードの結果をエンコードおよびデコードしようとしまし"311%C3%8D_316%C3%9E_337"たが、デコードの結果はまだ"311Í_316Þ_337"ですか?

1つのバックスラッシュの問題を解決するにはどうすればよいですか?

この文字列を関数に渡して、数字を分割するプロセスを実行したいのですが、バックスラッシュが区切り文字ですが、この問題によりそれができません。

4

4 に答える 4

3

データベース内のデータはOKであり、何も置き換える必要はありません。Javaコードで直接記述された文字列リテラルでは、バックスラッシュを別のバックスラッシュでエスケープする必要があります。

String s = "311\\315_316\\336_337";
System.out.println(s); // prints 311\315_316\336_337

ただし、データベースからこれらの値を取得する場合は、何もする必要はありません。

String s = resultSet.getString(1);
System.out.println(s); // should print 311\315_316\336_337
于 2012-08-05T14:37:49.070 に答える
2

Javaでは、バックスラッシュ\には特別な意味があります。それを削除するには、別の円記号でエスケープします\\

これを試して:

s.replaceAll("\\", "\\\\");
于 2012-08-05T14:38:40.843 に答える
2

Java 文字列では、バックスラッシュ文字は制御文字です。文字列にリテラル バックスラッシュを含めたい場合は、別のバックスラッシュでエスケープする必要があります。例えば"\\"

于 2012-08-05T14:36:22.070 に答える
0

Unicodeを使用することもできます\=\ u005c

例:「Folder \ u005cSubfolder1\u005cSubfolder2」

文字列は「Folder\Subfolder1\Subfolder2」になります

ここで完全な表を見ることができます:http://jrgraphix.net/r/Unicode/0020-007F

于 2012-08-05T14:51:54.500 に答える