【发布时间】:2017-03-20 16:34:21
【问题描述】:
我在将两个“相同”字符串转换为大写时遇到了一个非常奇怪的问题。该程序正在从网站读取行并将其与存储在文本文件中的行进行比较。如果未找到该行,则将其添加到文件末尾。除非该行包含特殊字符,否则这非常有效。由于某种原因,比较导致不匹配。我通过首先将它们转换为大写来比较这两个字符串,这就是它出错的地方。下面是一些代码。我省略了填充两个变量的部分。我只是展示了奇怪的部分。
print "$pageLine <-> $dbLine\n";
print uc( $pageLine ) . " <-> " . uc( $dbLine ) . "\n";
这会导致
Diëtisten <-> Diëtisten
DIëTISTEN <-> DIËTISTEN
请注意,第一个中的 ë 未转换为大写。
foreach my $kar (split( //, $pageLine) ) {
print ord($kar) . ":";
}
print "\n";
foreach my $kar (split( //, $dbLine) ) {
print ord($kar) . ":";
}
print "\n";
这会导致:
68:105:235:116:105:115:116:101:110:32:40:78:86:68:41:
68:105:235:116:105:115:116:101:110:32:40:78:86:68:41:
有人知道这里发生了什么吗?
提前致谢。
【问题讨论】:
-
perldoc.perl.org/functions/fc.html 也可能是一本好书。