【问题标题】:Javascript strToLower(), uft8 and (german) special charactersJavascript strToLower()、uft8 和(德语)特殊字符
【发布时间】:2012-04-16 23:13:13
【问题描述】:

我遇到了 JavaScript 的 strToLower() 问题

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

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

1: tür
2: tã¼r

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

马丁

【问题讨论】:

  • JavaScript 没有 strToLower 函数。 PHP 确实如此,快速搜索显示至少有人出于某种原因将其移植到 JavaScript,但 JavaScript 本身没有。 JavaScript 函数,toLowerCasedoesn't seem to exhibit the behavior you mention 在 Linux 上的 Chrome、Firefox 或 Opera 上,或者在 Windows 7 上的 IE9 或 Safari 上。
  • 您的页面被编码为 utf8,但您的服务器错误地告诉它是 ISO-8859-1。修正你的标题。
  • 标记为过于本地化 -- 鉴于 JavaScript 没有此功能,并且您没有回复 cmets,任何人都无法说出这里发生了什么。

标签: javascript utf-8 lowercase


【解决方案1】:

JavaScript 的原生 .toLowerCase() 方法可以很好地处理 UTF-8:

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

您的页面编码可能需要设置为带有标头的 UTF-8 或 meta-tag。

【讨论】:

  • 你试过了吗? alert("İbranice, IRMAK".toLowerCase()); --JS的native不完全支持utf-8
  • 取决于浏览器和操作系统,但您的示例按预期工作:“大多数 Unicode 软件 [...] 除非专门为土耳其语设置,否则它将小写 I 到 i 和大写 i 到 I。因此大写然后小写,反之亦然,会改变字母。” Source
【解决方案2】:

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

http://jsfiddle.net/5k5hv/

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      我试过了。

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-03-25
          • 1970-01-01
          • 1970-01-01
          • 2013-07-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多