标签: punycode

npm 中已弃用 punycode - 我应该用什么替换它?

punycode在我的 Angular 项目中使用 npm 模块。VsCode 告诉我它已被弃用,并且https://nodejs.org/api/punycode.html#punycode_punycode 确认:

Node.js 中捆绑的 punycode 模块版本已被弃用。在 Node.js 的未来主要版本中,该模块将被删除。当前依赖 punycode 模块的用户应改用用户区提供的 Punycode.js 模块。

建议切换到“用户提供的”模块。那是什么?

有一个指向https://github.com/mathiasbynens/punycode.js的链接,我尝试将其包含在我的 package.json 中而不是“punycode”中,但出现了相同的错误。

punycode node.js npm yarnpkg angular

33
推荐指数
2
解决办法
7万
查看次数

将带有破折号字符的punycode转换为Unicode

我需要将punycode转换NIATO-OTABDnñiñatoñ.

前几天我在JavaScript中找到了一个文本转换器,但是如果中间有一个破折号,则punycode转换不起作用.

有任何修复"破折号"问题的建议吗?

javascript unicode punycode

18
推荐指数
1
解决办法
1万
查看次数

Amazon SES - 电子邮件地址中的非ASCII字符

我正在尝试使用Amazon SDK for .NET和SES发送电子邮件.我有一封包含特殊字母的电子邮件,例如:

ęxąmplę@źćż.com

对于域部分,我读到有关Punycode的方法,并且工作正常.但对于地址的本地部分,我似乎无法找到解决方案:我尝试使用RFC 2047编码整个电子邮件,但随后SES返回'缺少最终@域'错误,所以我尝试只编码一个本地部分,所以电子邮件将是

=?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=@punycodeemail.com
Run Code Online (Sandbox Code Playgroud)

但这似乎也不起作用.有人成功地解决了这个问题吗?

.net email punycode amazon-web-services amazon-ses

13
推荐指数
1
解决办法
935
查看次数

IDNA转换域名的最大长度是多少?

首先要做的事情:

在我将每个域名转换为IDNA版本之后,我将多个域存储到数据库中.我需要知道这样一个IDNA转换域名的最大长度,以便我可以定义数据库字段的最大长度.

已知事实:

现在,我知道域名(包括任何子域)中的最大字符数为255个字符.

我输了的地方:

乍一看这很容易,但是......这是否意味着国际字符的常规ascii字符(想想UTF-8编码)?

举个例子:当我忽略"ü"是一个需要更多字节来表示的国际字符时,域"müller.de"有9个字符."müller.de"的IDNA版本是"xn--mller-kva.de",有16个字符.这表明最大长度肯定存在差异,具体取决于"if"是否转换为IDNA.

根据它们的含义,最多255个字符可以是国际字符版本,IDNA转换版本,甚至两者.

这就是我失去它的地方......特别是,因为我必须考虑到并非所有领域都是理智的,像"öüßüöäéèê.example.äöüßüöäéèê-äöüßüöäéèê.test.äöüßüöäéèê.com"这样的东西,更糟糕的是被期望.

因此,"猜测"和"希望最好"不是一种选择.我需要确定...

问题是:

基于已知的事实,即域名(包括任何子域)中的最大字符数是255个字符... IDNA转换的域名的最大长度是多少?

或者他们是否意味着IDNA转换版本(punycode)也限制为255个字符(这意味着具有国际/ unicode字符的域实际上在其unicode表示中具有更短的限制,因为他们的IDNA转换版本将必须尊重255个字符限制)?

dns database-design punycode maxlength idn

9
推荐指数
2
解决办法
2138
查看次数

Node.js表情符号解析

我正在尝试解析传入的字符串以确定它是否包含任何非emojis.

我已经阅读了Mathias的这篇精彩文章,并且正在利用本机punycode编码/解码和regenerate正则表达式生成.我也在用EmojiData来获取我的表情符号字典.

尽管如此,某些表情符号仍然是讨厌的小虫子并拒绝匹配.对于某些表情符号,我继续获得一对代码点.

// Example of a single code point:
console.log(punycode.ucs2.decode(''));
>> [ 128169 ]

// Example of a paired code point:
console.log(punycode.ucs2.decode('??'));
>> [ 8987, 65039 ]
Run Code Online (Sandbox Code Playgroud)

Mathias在他的文章中触及了这一点(并给出了一个解决这个问题的punycode的例子)但是即使使用他的例子我得到的答案也是错误的:

function countSymbols(string) {
  return punycode.ucs2.decode(string).length;
}
console.log(countSymbols(''));
>> 1
console.log(countSymbols('??'));
>> 2
Run Code Online (Sandbox Code Playgroud)

检测字符串是否包含所有表情符号的最佳方法是什么?这是为了概念验证,因此解决方案可以根据需要进行强力实施.

---更新---

上面我讨厌的表情符号的更多背景.

这些在视觉上是相同的,但实际上是不同的unicode值(第二个来自上面的例子):

? // \u231b

?? // \u231b\ufe0f
Run Code Online (Sandbox Code Playgroud)

第一个很好,第二个不好.不幸的是,第二个版本是iOS似乎使用的(如果你从iMessage复制和粘贴你获得第二个版本,当从Twilio接收文本时,同样的事情).

javascript unicode punycode node.js emoji

8
推荐指数
1
解决办法
5293
查看次数

punycode编码的电子邮件地址可以与"真实"地址冲突吗?

问题是:我使用的是第三方电子邮件递送服务,该服务不接受名称部分中包含非ASCII字符的邮件地址,例如müller@example.com.

用Punycode编码这样的地址:

http://en.wikipedia.org/wiki/Punycode

http://idnaconv.phlymail.de/index.php?decoded=m%C3%BCller%40example.com&idn_version=2008&encode=Encode+%3E%3E&lang=de

产生这个地址:

xn--mller-kva@example.com

通过该服务向其发送邮件似乎有效.

但是,我不确定是否有人无法直接注册"xn--mller-kva@example.com",因此接收的电子邮件意为"müller@example.com".

这可能会发生冲突吗?这个问题还有其他解决方案吗?

UPDATE

谢谢你的回答.以下是我们学到的内容摘要:

  • 对电子邮件地址的本地部分进行限制可以使用,您可以从这样的编码地址发送和接收(当然)
  • 但是,根本无法保证提供者或邮件客户端能够理解编码,或者自动执行此操作.因此可以进行冲突,整个想法不是很好:)
  • 根据规范,人们应该简单地做其他人做的事情,即不允许或接受非ASCII名称部分
  • 最后,事实证明,第三方服务无论如何都禁止这样的诡计.

email punycode

7
推荐指数
2
解决办法
6005
查看次数

DeprecationWarning:“punycode”模块已弃用

vs code 终端显示弃用警告 (节点:22063)[DEP0040] DeprecationWarning:该punycode模块已弃用。请改用用户态替代方案。(用于node --trace-deprecation ...显示警告的创建位置)

这就是问题所在。我的操作系统是 ubuntu 22.04。当我尝试将数据库与猫鼬一起使用时,问题就出现了。punycode 可以在我的 package-lock.json 文件中的某个位置看到。我自己没用过,是node自带的。

我的节点版本是 v21.0.0 ,我将其降级为 v20.9.0 然后 v18.18.0 仍然有警告。我安装了用户层模块但没有任何反应。

我理解的问题是 punycode 已被弃用,需要使用用户态替代 punycode.js 。但我不知道如何使其成为可能。

punycode mongoose userland deprecation-warning

7
推荐指数
1
解决办法
6166
查看次数

CookieContainer不存储国际化域名的cookie

我正在尝试使用WebClient在西里尔字段上执行授权.授权经过几个阶段,在正常域和punicode域之间进行重定向.问题是HttpWebRequest无法在指定的CookieContaier中存储cookie,如果它是由punycode域设置的.例如,此代码将抛出CookieException.

var cookie = new Cookie("test_cookie", "test_value", "/", ".xn----7sbcca6bi0ak9b0a6f.xn--p1ai");
var container = new CookieContainer().Add(cookie);
Run Code Online (Sandbox Code Playgroud)

将cookie重定向设置到另一个页面的响应加剧了这个问题,即在执行WebClient.UploadValues(...)之后,WebClient.ResponseHeaders中没有cookie信息.

以下是正常的授权过程(使用浏览器)

Method  Result  Received  Type       URL                                                        RedirectURL                                                Set-Cookie                                                                                                                                 
POST    302     1,18 K    text/html  http://xn----7sbcca6bi0ak9b0a6f.xn--p1ai/admin/login       http://xn----7sbcca6bi0ak9b0a6f.xn--p1ai/admin             sess_id=.......; expires=Mon, 06-Jun-2016 07:20:57 GMT; Max-Age=31536000; path=/; domain=.xn----7sbcca6bi0ak9b0a6f.xn--p1ai; httponly     
GET     302     722       text/html  http://xn----7sbcca6bi0ak9b0a6f.xn--p1ai/admin             /admin/orders                                                                                                                                                                                        
GET     200     200,00 K  text/html  http://xn----7sbcca6bi0ak9b0a6f.xn--p1ai/admin/orders                                                                                                                                                                                                            
Run Code Online (Sandbox Code Playgroud)

有没有解决方法?

.net c# cookies punycode idn

6
推荐指数
1
解决办法
372
查看次数

Python 将 punycode 转换回 unicode

我正在尝试从数据库将联系人添加到Sendgrid ,该数据库偶尔会将用户电子邮件存储在punycode example-email@xn--yaho-sqa.com中,该代码会转换example-email@yah\xc3\xb3o.com为 Unicode。

\n

无论如何,如果我尝试添加ascii版本,则会出现错误,因为sendgrid不接受它 - 但它确实接受 Unicode 版本。

\n

那么有没有办法在Python中将它们转换。

\n

所以我认为长话短说有没有办法将punycode解码为 Unicode?

\n

编辑

\n

正如评论中所建议的,我尝试\n'example-email@yah\xc3\xb3o.com'.encode('punycode').decode()返回example-email@yaho.com-cgc,所以这在Python之外是不正确的,所以不是一个有效的解决方案。

\n

提前致谢。

\n

python unicode punycode sendgrid

6
推荐指数
1
解决办法
3917
查看次数

Can I use non latin characters in my robots.txt and sitemap.xml?

Can I use non latin characters in my robots.txt file and sitemap.xml like this?

robots.txt

User-agent: *
Disallow: /somefolder/

Sitemap: http://www.domainwithåäö.com/sitemap.xml
Run Code Online (Sandbox Code Playgroud)

sitemap.xml

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>http://www.domainwithåäö.com/</loc></url>
<url><loc>http://www.domainwithåäö.com/subpage1</loc></url>
<url><loc>http://www.domainwithåäö.com/subpage2</loc></url>
</urlset>
Run Code Online (Sandbox Code Playgroud)

Or should I do like this?

robots.txt

User-agent: *
Disallow: /somefolder/

Sitemap: http://www.xn--domainwith-z5al6t.com/sitemap.xml
Run Code Online (Sandbox Code Playgroud)

sitemap.xml

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>http://www.xn--domainwith-z5al6t.com/</loc></url>
<url><loc>http://www.xn--domainwith-z5al6t.com/subpage1</loc></url>
<url><loc>http://www.xn--domainwith-z5al6t.com/subpage2</loc></url>
</urlset>
Run Code Online (Sandbox Code Playgroud)

sitemap robots.txt punycode domain-name

5
推荐指数
1
解决办法
404
查看次数