首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在URL中转义中文Unicode字符?

如何在URL中转义中文Unicode字符?
EN

Stack Overflow用户
提问于 2011-05-27 21:00:28
回答 2查看 4.6K关注 0票数 7

我有我的PHP web应用程序的中国用户输入产品到我们的系统。例如,输入的信息是产品名称和价格。

我们想使用产品标题来为这些产品生成一个很好的URL插件。似乎我们不能只使用中文作为HREF属性。

有谁知道我们如何处理像“婴儿服饰”这样的标题,这样我们就可以生成像http://www.site.com/婴儿服饰这样干净的url了吗?

对于“普通”语言来说,一切都很好,但是高UTF-8语言给我们带来了问题。

此外,当生成干净的网址时,我们想要记住搜索引擎优化,但我没有与中文在这方面的经验。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-27 21:53:02

如果您的字符串已经是UTF-8,只需使用rawurlencode对字符串进行正确编码:

代码语言:javascript
复制
$path = '婴儿服饰';
$url = 'http://example.com/'.rawurlencode($path);

UTF-8是非ASCII字符的首选字符编码(尽管URI中只允许ASCII字符,这就是您需要使用percent-encoding的原因)。结果与tchrist’s example中的结果相同

代码语言:javascript
复制
http://example.com/%E5%A9%B4%E5%84%BF%E6%9C%8D%E9%A5%B0
票数 6
EN

Stack Overflow用户

发布于 2011-05-27 21:16:47

这段代码使用了CPAN module, URI::Escape

代码语言:javascript
复制
#!/usr/bin/env perl

use v5.10;
use utf8;

use URI::Escape qw(uri_escape_utf8);

my $url  = "http://www.site.com/";
my $path = "婴儿服饰";

say $url, uri_escape_utf8($path);

运行时,打印:

代码语言:javascript
复制
http://www.site.com/%E5%A9%B4%E5%84%BF%E6%9C%8D%E9%A5%B0

这就是你要找的吗?

顺便说一下,这四个字符是:

代码语言:javascript
复制
CJK UNIFIED IDEOGRAPH-5A74
CJK UNIFIED IDEOGRAPH-513F
CJK UNIFIED IDEOGRAPH-670D
CJK UNIFIED IDEOGRAPH-9970

根据Unicode::Unihan的数据库,它似乎是yīngér füsh?,或者可能只是每个Lingua::ZH::Romanize::Pinyin的ying er füshi。甚至还可以使用Unicode::Unihan的粤语版本,甚至是jing²jan⁴fuk⁶sik?或者jing˥jan˨˩fuk˨sik˥。

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

https://stackoverflow.com/questions/6152577

复制
相关文章

相似问题

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