【问题标题】:Convert a string with Unicode characters in decimal format(html encoded) to a regular string将带有 Unicode 字符的十进制格式(html 编码)的字符串转换为常规字符串
【发布时间】:2014-06-13 11:38:26
【问题描述】:

我有一个 Map 类型的变量。

if (sourceMap.containsKey(currentRow)) {
    //Remove the row from Map
} else {
    //Mismatch
}

其中sourceMap 是一个Hashmap 变量,其中包含许多字符串,例如

Period Name
Person Last Name
Person First Name
Order Code
Ship_to_Customer_Name
Sub_Profit_Center
Commission Amount
Credit Amount
Rate Amount
Apr-09
Morgan
Martin
1022334852
Carl Zeiss de M&# 195;&# 189;xico, S.A. de C.V.(no space after the # in the string)

currentRow 包含以下字符串:

Carl Zeiss de Mýxico, S.A. de C.V.

与最后一行相同。我的要求是它应该匹配。现在它不匹配。我必须做什么转换才能匹配那些

这些字符串来自不同的文件 第一个以 CSV 格式下载,因此没有 unicode 字符。第二个(currentRow)以 unicode txt 格式下载并使用 dos2unix 转换为 CSV ..

【问题讨论】:

  • “当前行”看起来像是在将其从二进制转换为文本时应用了错误的编码。请提供有关值来自何处的更多信息 - 我怀疑您需要更早解决问题。
  • 编码错误&# 195;&# 189; 不同于ý
  • 字符串Carl Zeiss de "M&# 195;&# 189;xico, S.A. de C.V.(即使删除了实体中的无效空格)与字符串Carl Zeiss de Mýxico, S.A. de C.V.不同有两种不同的方式:1.第一个使用(或尝试使用) HTML 字符实体(对 Java 来说没什么特别的),以及 2. 第一个在大写 M 之前有一个引号,而第二个没有。作为参考,Java 中的Unicode escape sequences 如下所示:\uXXXX(其中X 是一个十六进制数字)。
  • 更新了问题..双引号输入错误,#symbol 后没有空格
  • 这些字符串来自不同的文件,第一个以 CSV 格式下载,因此没有 unicode 字符..第二个 (currentRow) 以 unicode txt 格式下载并使用 dos2unix 转换为 CSV..

标签: java string unicode hashmap


【解决方案1】:
Carl Zeiss de Mýxico, S.A. de C.V.

这是一个包含 HTML 编码字符的字符串。您可以使用诸如unescapeHtml4 之类的实用函数来执行 HTML-unescape。

通常,您希望将字符串保留为原始格式,而不是在其中包含 HTML 转义符。看看你在哪里得到你的sourceMap - 如果你控制它并且可以修复它,避免无缘无故的逃跑,那么这就会奏效。另请注意,Mýxico,无论是否为 HTML 编码,看起来都像是在堆栈中的其他地方错误处理 Unicode 字符的证据。

【讨论】:

  • Greate...谢谢....它起作用了..只是好奇。对其他字符串有什么影响..我检查了其他字符串,发现没有问题,只是为了澄清我我问..
【解决方案2】:

首先我们要从下面的urlhttp://www.java2s.com/Code/Jar/c/Downloadcommonlang3jar.htm下载jar文件

现在添加import语句如下

import static org.apache.commons.lang3.StringEscapeUtils.unescapeHtml4;

现在我们需要使用我们想要转义 html 编码字符串的方法。 例如:

String s=Carl Zeiss de Mýxico, S.A. de C.V.
System.out.println("Before: "+s);
s=unescapeHtml4(s);
System.out.println("After: "+s);

现在输出如下

Before: Carl Zeiss de Mýxico, S.A. de C.V. 
After: Carl Zeiss de Mýxico, S.A. de C.V.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多