将Java字符串转义为utf-8

将Java字符串转义为utf-8,java,utf-8,escaping,Java,Utf 8,Escaping,我正在寻找用于将常规字符串转换为utf-8字符串的java工具 e、 g 输入:特殊-数据应用-文本 输出:特殊-%u6570%u636E%u5E94%u7528文本 (注意前面的“%u”)你能试试下面的方法吗 StringBuilder b = new StringBuilder(); for( char c : s.toCharArray() ){ if( ( 1024 <= c && c <= 1279 ) || ( 1280 <= c &

我正在寻找用于将常规字符串转换为utf-8字符串的java工具

e、 g

输入:特殊-数据应用-文本

输出:特殊-%u6570%u636E%u5E94%u7528文本


(注意前面的“%u”)

你能试试下面的方法吗

StringBuilder b = new StringBuilder();

for( char c : s.toCharArray() ){
    if( ( 1024 <= c && c <= 1279 ) || ( 1280 <= c && c <= 1327) || ( 11744 <= c && c <= 11775) || ( 42560 <= c && c <= 42655)  ){
        b.append( "\\u" ).append( Integer.toHexString(c) );
    }else{
        b.append( c );
    }
}

return b.toString();
StringBuilder b=新的StringBuilder();
for(char c:s.toCharArray()){
如果((1024试试这个

String s= URLEncoder.encode(str, "UTF-8").replaceAll("%(..)%(..)", "%u$1$2");
两件事:

  • 结果,您想要的字符串不是UTF-8,至少您作为示例放置的字符串是某种UTF-16编码的(java在内部使用UTF-16)

  • 提供所需字符串的代码示例:

    String str = "special-数据应用-text";
    
    StringBuilder builder = new StringBuilder();
    for(char ch: str.toCharArray()) {
        if(ch >= 0x20 && ch <= 0x7E) {
            builder.append(ch);
        } else {
            builder.append(String.format("%%u%04X", (int)ch));
        }
    }
    
    String result = builder.toString();
    
    String str=“特殊-数据应用-文本”;
    StringBuilder=新的StringBuilder();
    for(字符ch:str.toCharArray()){
    
    如果(ch>=0x20&&ch让我推荐您取消Escape[]

    在其他转义操作(HTML、XML等)中,它将允许您通过以下方式转义Java文本:

    final String escaped = JavaEscape.escapeJava(text);
    
    根据StackOverflow规则,免责声明:我是Escape的作者