Javaでの自動Unicode文字列フォーマット
-
07-07-2019 - |
質問
次のようなものに出会いました:
String sample = "somejunk+%3cfoobar%3e+morestuff";
印刷されたサンプルは次のようになります:
somejunk +
<foobar
<!> gt; + morestuff
それはどのように機能しますか? U + 003cとU + 003eはそれぞれ小なり記号と大なり記号のUnicodeコードです。これは偶然以上のように思えますが、Javaがこのようなことを自動的に行うことを聞いたことがありません。 Googleに簡単にアクセスできると思いましたが、Googleはパーセント記号が気に入らないことがわかりました。
解決
このようなことができます
String sample = "somejunk+%3cfoobar%3e+morestuff";
String result = URLDecoder.decode(sample.replaceAll("\\+", "%2B"), "UTF8");
他のヒント
その文字列はおそらく URLエンコードを使用してJavaでデコードします URLDecoder
String res = java.net.URLDecoder.decode(sample, "UTF8");
Javaは、char
およびString
リテラルでのUnicodeエスケープをサポートしていますが、URLエンコードはサポートしていません。
Unicodeエスケープは'\uXXXX'
を使用します。XXXXは16進数のUnicodeポイントです。
好奇心t盛:文法では'u'
を複数回使用できるため、'\uuuuuuuu0041'
は有効なUnicodeエスケープです('A'
の場合)。
所属していません StackOverflow