2012-04-03 48 views
0

我运行与JavaScript的用strtolower()麻烦的Javascript用strtolower(),UFT8和(德国),特殊字符

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

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

1: tür 
2: tã¼r 

任何建议如何使用strToLower()正确处理uft8特殊?

马丁

+3

JavaScript没有'strToLower'函数。 PHP的确如此,并且快速搜索显示至少有一个人由于某种原因将其移植到了JavaScript中,但JavaScript本身并没有。 Chrome上的Firefox,Firefox或Opera,Windows 7上的IE9或Safari上的JavaScript函数“toLowerCase”[似乎没有表现出您提及的行为](http://jsbin.com/epefab)。 – 2012-04-03 09:55:22

+0

你的页面被编码为utf8,但你的服务器错误地告诉它是ISO-8859-1。修复你的标题。 – georg 2012-04-03 09:59:53

+0

标记为本地化 - 由于JavaScript没有此功能,并且您没有回复评论,所以任何人都无法说出这里发生了什么。 – 2012-05-07 21:15:18

回答

3

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

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

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

+0

你试过了吗?警报(“İbranice,IRMAK”.toLowerCase()); --JS的本机完全不支持utf-8 – 2012-12-24 01:24:32

+1

取决于浏览器和操作系统,但您的示例正如预期的那样工作:“大多数Unicode软件除非专门针对土耳其语设置,否则会降低i和大写字母我到I.因此,大写,小写,反之亦然,改变了字母。“ [来源](HTTP://en.wikipedia。组织/维基/虚线\ _and \ _dotless \ _ I) – RikkusRukkus 2012-12-24 09:12:51

0

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

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

0

确保您使用的编码为“UTF-8无BOM”(在记事本++选项)工作,并添加文件<META http-equiv="Content-Type" content="text/html; charset=EUC-JP"><head>

我尝试和作品。

0

你的代码没有意义。如果您将tür分配给一个字符串,那么您总是会收到tür。您可能忽略了代码中的一个步骤,例如通过AJAX将字符串发送到服务器。要做到这一点,字符串必须进行编码,通常使用UTF-8,在这种情况下正确的编码是tür,正如你所看到的。但是,如果服务器使用ISO-8859-1而不是UTF-8,那么它会认为你的原始字符串是tür,并且会尝试按照描述将其小写为tã¼r。当前端尝试将其解释为UTF-8时,这会造成问题。解决方案是确保服务器也使用UTF-8。