Javascript strToLower(),uft8和(德语)特殊字符

时间:2012-04-03 09:53:02

标签: javascript utf-8 lowercase

我遇到了JavaScripts strToLower()

的问题
var s = 'tür';
alert(s);
alert(s.strToLower());

应该产生相同的输出。但是输出是不同的:

1: tür
2: tã¼r

如果使用strToLower(),如何正确处理uft8-special的任何建议?

马丁

5 个答案:

答案 0 :(得分:3)

JavaScript的原生.toLowerCase()方法处理UTF-8就好了:

alert( "tür".toLowerCase() );

您的网页编码可能需要设置为带标题或meta标记的UTF-8。

答案 1 :(得分:0)

有一个toLowerCase函数,它应该正常工作,因为Javascript在内部使用UTF8。检查:

http://jsfiddle.net/5k5hv/

答案 2 :(得分:0)

您有两个内置函数可以转换为小写:.toLowerCase().toLocaleLowerCase()。两者都应该可以正常使用您提供的示例,但您需要确保已将源代码保存为UTF-8。确切的过程在很大程度上取决于您的IDE或编辑器。

此外,如果您的Web服务器将字符集附加到Content-Type标头,也不会受到影响。

答案 3 :(得分:0)

确保您使用的文件已编码为“无BOM的UTF-8”(Notepad ++中的选项),并在<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">

中添加<head>

我尝试过并且工作。

答案 4 :(得分:0)

你的代码毫无意义。如果您将tür分配给字符串,那么您将始终返回tür。您可能省略了代码中的一个步骤,例如将字符串通过AJAX发送到服务器。为此,必须对字符串进行编码,通常使用UTF-8,在这种情况下,正确的编码是tür。但是,如果服务器使用的是ISO-8859-1而不是UTF-8,那么它会认为您的原始字符串是tür,并会尝试将其小写为tã¼r,如上所述。当前端尝试将其解释为UTF-8时,这将导致问题。解决方案是确保服务器也使用UTF-8。