我正在比较字符串,并且必须替换 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>
标签或页面的标题/元(如果嵌入)或指定符号\uNNNN
始终明确解析为某些特定 Unicode 代码点的语法。
例如:
str.replace(/\u00e4/g, "ae")
无论您的页面/脚本设置什么编码,即使它不正确,都将始终将 ä 替换为 ae。
以下是日耳曼语言所需的代码:
// Ü, ü \u00dc, \u00fc
// Ä, ä \u00c4, \u00e4
// Ö, ö \u00d6, \u00f6
// ß \u00df
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)