栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用JavaScript将特殊的UTF-8字符转换为等效的iso-8859-1?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用JavaScript将特殊的UTF-8字符转换为等效的iso-8859-1?

实际上,所有内容通常都在内部以某种Unipre形式存储,但不要赘述。我假设您正在使用标志性的“åäö”类型的字符串,因为您使用的是ISO-8859作为字符编码。您可以采取一种技巧来转换这些字符。用于编码和解码查询字符串的

escape
unescape
函数是为ISO字符定义的,而较新的
enpreURIComponent
depreURIComponent
功能相同的函数是为UTF8字符定义的。

escape
将扩展的ISO-8859-1字符(UTF代码点U + 0080-U + 00ff)
%xx
编码为(两位十六进制),而将UTF代码点U +
0100及更高版本编码为
%uxxxx
%u
后跟四位十​​六进制。)例如,
escape("å") == "%E5"
escape("あ") =="%u3042"

enpreURIComponent
将扩展字符百分比编码为UTF8字节序列。例如
enpreURIComponent("å") =="%C3%A5"
enpreURIComponent("あ") == "%E3%81%82"

因此,您可以执行以下操作:

fixedstring = depreURIComponent(escape(utfstring));

例如,错误编码的字符“å”变成“Ã¥”。该命令执行的操作

escape("Ã¥") =="%C3%A5"
是将两个错误的ISO字符编码为单个字节。然后
depreURIComponent("%C3%A5") =="å"
,将两个百分比编码的字节解释为UTF8序列。

如果由于某种原因需要进行相反的操作,那也可以:

utfstring = unescape(enpreURIComponent(originalstring));

有没有办法区分错误的UTF8字符串和ISO字符串?原来有。如果给定格式错误的编码序列,则上面使用的enpreURIComponent函数将引发错误。我们可以使用它来检测我们的字符串是UTF8还是ISO。

var fixedstring;try{    // If the string is UTF-8, this will work and not throw an error.    fixedstring=depreURIComponent(escape(badstring));}catch(e){    // If it isn't, an error will be thrown, and we can assume that we have an ISO string.    fixedstring=badstring;}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/420760.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号