【发布时间】:2012-07-24 01:24:41
【问题描述】:
我正在比较字符串,必须替换 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
在我看来完全没问题。
【问题讨论】:
-
您在数据库中使用什么编码以及在您的网页中使用什么编码?
-
字符串是什么???记录下来。您的方法可行,但正如您从 indexOf 中看到的,您的字符串不包含“ä”。
-
"bäg".replace(/ä/g, "ae"); // ==> "baeg",所以你的编码可能有问题 -
@Bergi:我记录了字符串,并且 ä 显示在控制台中,在替换之前和之后 - 它肯定存在 :-) 我将编码写入问题,这似乎完全可以我,这就是我选择奥列格答案的原因。非常感谢你们 - 是的,这样问题并没有真正解决“它的根源”
标签: javascript encoding replace