Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Javascript UTF-8转换为ASCII(如PHP中的Iconv(';UTF-8';,';ASCII//translatit';,$string)_Javascript_Utf 8_Ascii_Iconv - Fatal编程技术网

将Javascript UTF-8转换为ASCII(如PHP中的Iconv(';UTF-8';,';ASCII//translatit';,$string)

将Javascript UTF-8转换为ASCII(如PHP中的Iconv(';UTF-8';,';ASCII//translatit';,$string),javascript,utf-8,ascii,iconv,Javascript,Utf 8,Ascii,Iconv,我想知道如何使用Javascript将UTF-8中的字符“翻译”为最接近的ASCII等效字符,就像PHP中的Iconv doest一样 例如: ü变成uó变成o 我不想使用替换,因为a)它需要一组完整的字符,这需要大量的工作;b)我很难获得一组完整的字符,而且我永远无法确定是否缺少一两个。正如@Pointy所说,您唯一的选择是根据字典映射/替换字符 您会发现这非常有用:这是我找到的最简单的方法: var str = "üó"; var combining = /[\u0300-\u036F]/g

我想知道如何使用Javascript将UTF-8中的字符“翻译”为最接近的ASCII等效字符,就像PHP中的Iconv doest一样

例如:

ü变成u
ó变成o


我不想使用替换,因为a)它需要一组完整的字符,这需要大量的工作;b)我很难获得一组完整的字符,而且我永远无法确定是否缺少一两个。

正如@Pointy所说,您唯一的选择是根据字典映射/替换字符


您会发现这非常有用:

这是我找到的最简单的方法:

var str = "üó";
var combining = /[\u0300-\u036F]/g; 

console.log(str.normalize('NFKD').replace(combining, ''));

现在有一个iconv到JS的端口:


当你说“UTF-8”时,你真的是指UTF-8吗?比如,一个“字符”字符串,其元素实际上根本不是字符,而是提升为16位的简单UTF-8代码单元?或者你的意思是“Unicode”,即一个普通的JavaScript UTF-16字符串?这是可能的,但除了从Unicode值映射到你(或某人)认为合适的任何ASCII“等价物”之外,没有算法方法可以做到这一点。请注意,UTF-8字符串可能包含许多不同字母的代码点。这一术语是“转录”或“音译”,可能有一些库。这里有更多Uoah@Esailija!这真是太完整了!:)我意识到这是一个古老的答案,但GitHub链接已断开。@Jaruba给你,伙计:)唯一的缺点:它是EcmaScript 6的一部分,不适用于所有浏览器另一个缺点:只包含合并标记,不是完整的音译。请查看类似的SO问题和接受的答案,了解为什么上述代码不起作用的注释-注释列出了此代码无法替换的字母:
var iconv = new Iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE');
iconv.convert('ça va が'); // "ca va "