通过URL方案启动应用程序后,多语言URL更改为怪异字符

时间:2019-05-03 11:49:12

标签: ios swift deep-linking url-scheme cjk

我要使用iOS提供的url方案从外部源(如网站)启动我的应用。例如,我创建了一个HTML文件,其代码如下。查询字符串包含一些日语字符。

<html>
<a href="myapp://?appid=12345&destination=奈良県奈良市雑司町406-1">Visit Todaiji</a>
</html>

当我在野生动物园模拟器中打开该html文件并点击链接“访问东大寺”时,我的应用程序通过此url方案成功打开。

问题是当我在开放的url委托中收到此url时

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool 
{
     return true      
}

URL转换为如下

myapp://?appid=12345&destination =奈良県奈良市é%E2%80%BA‘å%C2%8F¸ç”º406-1

我尝试了多种类型的编码(例如UTF-8,ASCII,nonLossyASCII)将字符串转换回日语,但没有任何效果。如果在Mac Safari中打开了html文件,然后单击了链接,则在safari地址栏中也可以看到相同的行为。是否可以从网址中以日语形式返回字符串。

1 个答案:

答案 0 :(得分:1)

URI不应包含原始日语(以及许多其他国际语言的)字符。您的参数值应为百分比编码。

该乱码参数可能是原始日语文本被解码为百分比编码的字符串的结果。

如果将其用于href会发生什么?

myapp://?appid=12345&destination=%e5%a5%88%e8%89%af%e7%9c%8c%e5%a5%88%e8%89%af%e5%b8%82%e9%9b%91%e5%8f%b8%e7%94%ba406%2d1