以前在Netbeans中运行文件加载并抓取String条目进行比较会产生可预测的结果:
(过度简化以解决问题的核心。) 文件1:UTF-8编码 文件2:ISO-8859-1编码
NETBEANS
String strFromFile1 = "A - B";
String strFromFile2 = "A - B";
(strFromFile1 == strFromFile2)评估为true。
然而,在将项目移动到Eclipse之后,我注意到有时字符串值会发生变化,并且只有我的许多文件中的一个,有时会删除短划线( - ),没有可辨别的模式:
ECLIPSE
String strFromFile1 = "A B";
String strFromFile2 = "A - B";
(strFromFile1 == strFromFile2)评估为false。
比较是正确的,但为什么第一个字符串会改变? 源文本文件没有更改。他们都包含破折号。 但是,每个文件的字符编码都不同。
为什么会这样?为什么Eclipse选择忽略特定文件中的某些字符?其他相同编码类型的文件(ISO-8859-1,UTF-8)没有遇到此问题。
答案 0 :(得分:0)
我怀疑这个问题与NetBeans vs Eclipse环境字符编码有关。
但是,将运行配置更改为运行方式>其他>编码> UTF-8对此问题没有影响。
必须在常规级别更改Eclipse中的设置:
窗口>偏好>文本文件编码>其他> UTF-8 强>
更改此设置后,问题得到解决,并且所有使用字符串比较的测试都按预期传递(与迁移到Eclipse之前的NetBeans中一样)。