如何解决如何在URL中转义中文Unicode字符?
| 我有我的PHP Web应用程序的中国用户,他们将产品输入到我们的系统中。输入的信息例如是产品标题和价格。 我们想使用产品标题为这些产品生成一个不错的URL标记。 似乎我们不能只使用中文作为HREF属性。 有谁知道我们如何处理“婴儿服饰”之类的标题,以便我们生成干净的网址(如“ 0”)? 一切对于“普通”语言都可以正常工作,但是高UTF-8语言给我们带来了问题。 另外,在生成干净的URL时,我们希望牢记SEO,但是我在这方面没有中文经验。解决方法
如果您的字符串已经是UTF-8,请使用
rawurlencode
正确编码该字符串:
$path = \'婴儿服饰\';
$url = \'http://example.com/\'.rawurlencode($path);
对于非ASCII字符,UTF-8是首选的字符编码(尽管URI中仅允许使用ASCII字符,这就是为什么需要使用百分比编码)。结果与tchrist的示例相同:
http://example.com/%E5%A9%B4%E5%84%BF%E6%9C%8D%E9%A5%B0
, 此代码使用CPAN模块URI :: Escape:
#!/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);
运行时,打印:
http://www.site.com/%E5%A9%B4%E5%84%BF%E6%9C%8D%E9%A5%B0
这就是您要找的东西吗?
顺便说一句,这四个字符是:
CJK UNIFIED IDEOGRAPH-5A74
CJK UNIFIED IDEOGRAPH-513F
CJK UNIFIED IDEOGRAPH-670D
CJK UNIFIED IDEOGRAPH-9970
根据Unicode :: Unihan数据库,似乎每个lingua :: ZH :: Romanize :: Pinyin都是yīngérfúshì,或者仅仅是ying erfúshi。甚至使用Unicode :: Unihan的粤语版本,甚至jing¹janfuk⁶sik¹或jing˥jan˨˩fuk˨sik˥。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。