Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.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 将非ASCII字符(UMLAUT、重音…)转换为最接近的ASCII等效字符(段塞创建)_Javascript_Character Encoding_Ascii_Converter_Slug - Fatal编程技术网

Javascript 将非ASCII字符(UMLAUT、重音…)转换为最接近的ASCII等效字符(段塞创建)

Javascript 将非ASCII字符(UMLAUT、重音…)转换为最接近的ASCII等效字符(段塞创建),javascript,character-encoding,ascii,converter,slug,Javascript,Character Encoding,Ascii,Converter,Slug,我正在JavaScript中寻找将字符串中的非ASCII字符转换为最接近的等效字符的方法,类似于PHP函数的功能。例如,如果输入字符串为Rånades påskytis iÖ-vik,则应将其转换为Ranades pa skytis i o-vik。我看了一下,但不包括iconv 是否可以在JavaScript中执行这种转换,如果可以,如何执行?这是因为iconv是一个本地编译的UNIX实用程序,支持大多数i18n字符映射转换函数 除非访问某些浏览器组件,否则在javascript中找不到它 编

我正在
JavaScript
中寻找将字符串中的非
ASCII
字符转换为最接近的等效字符的方法,类似于
PHP
函数的功能。例如,如果输入字符串为
Rånades påskytis iÖ-vik
,则应将其转换为
Ranades pa skytis i o-vik
。我看了一下,但不包括
iconv


是否可以在JavaScript中执行这种转换,如果可以,如何执行?

这是因为
iconv
是一个本地编译的UNIX实用程序,支持大多数i18n字符映射转换函数

除非访问某些浏览器组件,否则在
javascript
中找不到它

编码是文档的一个属性,所以大多数javascript实现只是简单地忽略它

对于非注释字符串,您需要一个纯js库。最好为您需要的特定语言设置一个

最简单的方法是通过一些translate表甚至regex替换

就像这里:


也检查此线程:

我找到的最简单的方法:

var str = "Rånades på Skyttis i Ö-vik";
var combining = /[\u0300-\u036F]/g; 

console.log(str.normalize('NFKD').replace(combining, ''));
参考请参见

我推荐该软件包,它还将希腊字母和西里尔字母映射到最接近的ascii符号:

unidecode('Lillı Celiné Никита Ödipus');
“Lilli Celine Nikita Odipus”


相关(但不是真正的一揽子解决方案):如果不维护庞大的替换表(至少,我从未见过这样做的方法),这在JavaScript中可能不可能实现。没有办法将数据发送到服务器并在那里使用iconv?我曾经创建过一个函数来执行此操作。请参见,Ctrl+F“
var RW759\u规范化\u重音”
。它用于规范化字符以进行搜索,我使用专用工具手动选择字符iirc。基于@Pekka:你不认为通过编辑标题,你缩小了问题的范围吗?我最初编写了
非ASCII字符
,您将其替换为
带有umlauts/重音的字符
。对我来说,除了
umlauts
accents
之外,还有很多其他字符也需要转换:。也许将标题改为
将非ASCII字符(umlauts,accents…)转换为最接近的ASCII等效字符(slug创建)
会是一个很好的折衷方案?@用户我(非专家)的假设是所有的变音符号都包含在“accents”中。当然,说吧,这听起来是一个很好的折衷办法。我刚刚意识到,用一个
ASCII
字符替换变音符号并不理想。例如,在德语中,
u
应转换为
ue
,而不仅仅是
u
,请参阅。似乎连
iconv
都没有做ir(
php-r'setLocale(LC_ALL,“de_de”);echo-iconv(“UTF-8”、“ASCII//translat”、“ü”);”/>u)
,因此我想我自己创建翻译表(基于
iconv
,并手动调整)并将它们同时用于
JavaScript
PHP
。根据这一点,如果语言环境设置为德语,iconv将
u
转换为
ue
。。到目前为止,它只支持最新的Chrome和Firefox Alpha。不过很有希望。我在NodeJS中使用了这种方法。也许客户端有一些Unicode规范化模块,比如Node.js有iconv端口。是的,但不需要使用额外的模块如何处理挪威字符,如ø或æ?