【发布时间】: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