JavaScript中用fromCharCode输出土耳其字符乱码如何解决?
问题原因
你出现乱码的核心原因是使用了已废弃的event.keyCode + String.fromCharCode的组合来获取输入字符:
keyCode返回的是键盘按键的物理位置编码,不是实际输入的字符编码,本身就不支持非ASCII类的特殊字符(包括土耳其语的ÖÜĞİŞÇ等)- 该属性已经被Web标准废弃,兼容性和正确性都没有保障
修复方案
第一步:替换字符获取逻辑
直接用event.key获取用户实际输入的字符,不需要手动转码,原生就能识别土耳其特殊字符,同时补充逻辑优化插入规则:
window.addEventListener('keyup',function(event){ // 过滤功能按键,避免把回车、Shift之类的功能键内容插入页面 if(event.key.length > 1) return; var span = this.document.createElement('span'); // 直接用event.key取实际输入的字符,替换原来的keyCode转码逻辑 span.innerText= event.key; span.style.color='white'; var harfDivleri = this.document.querySelectorAll('.harfDivleri'); var i = kelimeDiv.children.length; while (0 < i) { i--; if(harfDivleri[i].innerHTML == ""){ harfDivleri[i].appendChild(span); // 插入成功就跳出循环,避免重复遍历 break; } } });
第二步:确认页面编码配置
检查HTML头部是否声明了UTF-8编码,避免页面本身渲染编码异常:
<head> <meta charset="UTF-8"> <!-- 其余头部配置 --> </head>
内容的提问来源于stack exchange,提问作者Batuhan Fındık
相关产品推荐
相关产品推荐

