java如何在字符串中转义重音字符

时间:2015-05-15 03:31:10

标签: java jquery

例如

 {"orderNumber":"S301020000","customerFirstName":"ke ČECHA ","customerLastName":"张科","orderStatus":"PENDING_FULFILLMENT_REQUEST","orderSubmittedDate":"May 13, 2015 1:41:28 PM"}

如何在上面的json字符串中获取像“Č”这样的重音字符并在java中将其转义

请提供一些有关此问题的背景信息,请向我查看此问题 Ajax unescape response text from java servlet not working properly

对不起我的英文:)

1 个答案:

答案 0 :(得分:1)

您应该转义所有大于0x7F的字符。您可以使用.charAt(index)方法遍历String的字符。对于需要转义的每个字符ch,请将其替换为:

String hexDigits = Integer.toHexString(ch).toUpperCase();
String escapedCh = "\\u" + "0000".substring(hexDigits.length) + hexDigits;

我认为您不需要在JavaScript中使用它们,因为JavaScript支持字符串文字中的转义字符,因此您应该能够按照服务器返回的方式处理字符串。我猜你将使用JSON.parse()将返回的JSON字符串转换为JavaScript对象like this

这是一个完整的功能:

public static escapeJavaScript(String source)
{
    StringBuilder result = new StringBuilder();

    for (int i = 0; i < source.length(); i++)
    {
        char ch = source.charAt(i);

        if (ch > 0x7F)
        {
            String hexDigits = Integer.toHexString(ch).toUpperCase();
            String escapedCh = "\\u" + "0000".substring(hexDigits.length) + hexDigits;
            result.append(escapedCh);
        }
        else
        {
            result.append(ch);
        }
    }

    return result.toString();
}