我正在比较字符串,必须替换JS中的变音符,但是JS似乎无法识别字符串中的变音符。文本来自数据库,在浏览器中变音符的确显示得很好。
function replaceUmlauts(string)
{
value = string.toLowerCase();
value = value.replace(/ä/g, 'ae');
value = value.replace(/ö/g, 'oe');
value = value.replace(/ü/g, 'ue');
return value;
}
作为搜索模式,我尝试过:
ä
”,“ö
”,“ü
”(完全绝望;-))可以肯定的是,我尝试使用indexOf的替换功能不是问题:
console.log(value.indexOf('ä'));
但是所有模式的输出是:
-1
因此,我认为编码存在某种问题,但是正如我在页面上所说的那样,变音符看起来确实不错。
有任何想法吗?这看起来很简单...
编辑:
即使找到答案,也不能真正“从根本上”解决问题(编码)。
这是我的页面编码:
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
该数据库具有:utf8_general_ci
对我来说似乎完全没问题。
最佳答案
请确保正确指定了脚本的编码(在<script>
标记中,或者在页面的 header /元数据中,如果已嵌入),或者使用\uNNNN
语法指定符号,这些符号将始终明确地解析为某些特定的Unicode代码点。
例如:
str.replace(/\u00e4/g, "ae")
即使为页面/脚本设置了什么编码,即使它不正确,也将始终用ae替换ä。
以下是日耳曼语所需的代码:
// Ü, ü \u00dc, \u00fc
// Ä, ä \u00c4, \u00e4
// Ö, ö \u00d6, \u00f6
// ß \u00df