【问题标题】:How to convert this string format to proper format?如何将此字符串格式转换为正确的格式?
【发布时间】:2012-06-07 17:52:24
【问题描述】:

现在我有 JSON 数据,其中包含如下内容:

\u00e9

我怎样才能改变它的格式,以便可以正常表示为“é”?

【问题讨论】:

    标签: java string unicode


    【解决方案1】:

    Java 中的 Unicode 字符被视为文字。例如,

    String foo = "\u00e9";
    

    被视为文字字符é。说了这么多,这个示例程序有没有给你一些想法?

    public class Foo {
        public static void main(String[] args) {
            String myCharacter = "\u00e9";
            System.out.println(myCharacter);
        }
    }
    

    看看StringCharacter

    【讨论】:

    • OP 正在尝试处理 JSON 数据中存在的 Unicode 转义字符,而不是编写包含 Unicode 文字的 Java 代码。
    • 哦,对了——从 OP 和标签提供的信息来看,表明他们正在用 Java 编写代码来处理 JSON 数据。
    • 这和原来的问题有什么关系?不,示例程序没有给出任何想法。
    【解决方案2】:

    你没有说你是否使用了任何 JSON 工具,但其中一些工具支持这种转义处理。如果您自己处理它,除了自己解析转义序列之外,您无能为力。有多种方法可以做到这一点(包括使用正则表达式),但这很容易直接做到。只需查找“\u”前缀,获取接下来的四个字符并将它们解析为十六进制整数。然后将结果转换为 char 并使用它来代替六个原始字符。

    【讨论】:

    • Apache 的人已经构建了解析器。看我的回答。
    【解决方案3】:

    org.apache.commons.lang.StringEscapeUtils.unescapeJava("\\u00e9")

    【讨论】:

    • 成功地将我的 JSON 字符串从转义转换为非转义,创建了新的 JSONObject,一切正常。
    • 当我使用这个 Java 语句时: System.out.println(org.apache.commons.lang.StringEscapeUtils.unescapeJava("\\u00e9"));我在带有命令行终端的运行 OS X 的 MacBook Pro 上得到字符“Ž”。有人知道原因吗?
    猜你喜欢
    • 2012-02-01
    • 2020-03-26
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 2016-03-06
    • 2018-04-25
    • 2012-03-08
    • 1970-01-01
    相关资源
    最近更新 更多