首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未正确检索重音字符

未正确检索重音字符
EN

Stack Overflow用户
提问于 2014-07-18 14:58:11
回答 3查看 422关注 0票数 2

我今天遇到了这个奇怪的问题。我们的页面中有一个电子邮件字段,如果用户输入:

specialcharacter123@eñe.es

然后只有在Chrome的情况下,我才会得到specialcharacter123@xn--ee-zja.es

我试过了:

代码语言:javascript
复制
jQuery('#email').val()  

代码语言:javascript
复制
document.getElementById('email').value    

两者都给了我相同的结果。(它在Safari中运行良好)。

另外,我在页面中已经有了这个:

代码语言:javascript
复制
<meta charset="utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  

我不能得到任何线索,这里出了什么问题。

EN

回答 3

Stack Overflow用户

发布于 2014-07-18 15:06:17

域名只能包含ASCII字符,请参阅Internationalized domain name。在处理请求时,URL可以很好地工作,但如果您想要将其显示为UTF8,则需要将其转换。对于不同的语言,有不同的解决方案,对于JavaScript你可以使用punycode.js

票数 1
EN

Stack Overflow用户

发布于 2020-09-06 02:41:42

根据w3.org关于输入type=email的电子邮件地址输入控件:

ABNF值:与以下

生产匹配的任何字符串:

1*( atext / ".“) "@”ldh-str 1*( ".“ldh-字符串)

…其中,atext如RFC 5322中所定义,而ldh-str如RFC 1034中所定义。

也就是说,匹配以下正则表达式的任何字符串:

/^a-zA-Z0-9.!#$%&’_+/=?^_`{|}~-+@a-zA-Z0-9-+(?:.a-zA-Z0-9-+)_$/

来源:https://www.w3.org/TR/2012/WD-html-markup-20120329/input.email.html

从上面的正则表达式可以看出,输入的值不能包含非ascii字符。这是有问题的,因为电子邮件地址有时确实包含非ascii。Chrome所做的一切只是(愚蠢地)对电子邮件地址的域名部分进行了punycode编码,这样它就可以满足w3c的要求。他们应该做的就是不去管它,因为不言而喻,表单验证应该要么接受用户的输入,要么拒绝它,但永远不会改变它。

票数 1
EN

Stack Overflow用户

发布于 2014-07-18 16:29:36

这真的很奇怪;但我已经通过以下更改修复了这个问题:

来自:的

代码语言:javascript
复制
<input type="email" id="email" ></input>

TO:

代码语言:javascript
复制
<input type="text" id="email" ></input>  

类型从email更改为text,现在可以正常工作了。(这个解决方案还有其他问题,但我可以接受)。在Chrome中,type='email'不能像预期的那样工作。带重音的字符正在被转换为punycode。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24818970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档