Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

utf-8 url转译扩展? #17

Open
shangjiaxuan opened this issue Dec 3, 2019 · 5 comments
Open

utf-8 url转译扩展? #17

shangjiaxuan opened this issue Dec 3, 2019 · 5 comments

Comments

@shangjiaxuan
Copy link

如题,现在主代码仓库的数据库里面的字符串基本都是可以支持非ascii编码的单独的字符串了,但是唯独url还是不能有空格和中文。目前看起来flarum-china的解决方法是用户链接/u/username改成/u/userid条目链接/d/discussionid-discussionname改成了/d/discussionid,只留下了一串数字。

如果使用官方扩展仓库foftransliterator会把讨论条目链接的标题部分变成拼音,治标不治本。因为讨论条前面有数字,所以有没有空格,拼音相同也是没有问题的。但是到了用户就不是这样。

但是我真的还是想用/u/用户名称来访问用户条目,毕竟这样才更有社区的感觉。原则上只要把utf-8编码的字符串用标准的那种%xx的十六进制表示出来,现行的大部分浏览器似乎都是这样做的,就能解决问题了。(url输入中文就会这样处理非允许的字符)

但是这需要在服务器端逻辑里面去处理。不知道有人感兴趣搞一下吗。。。或者在fof/transliterator里面加一个这样的两个地方都这样子转译的选项。

@shangjiaxuan
Copy link
Author

shangjiaxuan commented Dec 3, 2019

在讨论串里面点头像进中文用户名用户界面,目前默认不开新页面有时候能成功进入,但是有空格又不行。这里可能有另一个代码路线,也应该处理一下。(指在页面产生的url也要先编码好)

@shangjiaxuan
Copy link
Author

似乎英文标签如果有空格也有这个问题。应该如果能识别%20就能解决了

@shangjiaxuan
Copy link
Author

shangjiaxuan commented Dec 3, 2019

按最新的release,似乎也有人提到utf-8的问题,主要开发人员讲的是本地临时修改一点点应该不难,可以在主仓库开issue。

按我的理解应该主要改一下core/src/Http里面的东西就可以了(如果后续处理不管http不允许的字符,这里字符串改对应该就可以了?)?

(更好的当然是在每个需要的模块去改。。。)

@shangjiaxuan
Copy link
Author

@shangjiaxuan
Copy link
Author

用户名url的问题似乎可以在src/Api//Controller/ShowUserController.php里面的

protected function data(ServerRequestInterface $request, Document $document)

修改

if (! is_numeric($id)) {
    $id = $this->users->getIdForUsername($id);
}

if (! is_numeric($id)) {
    $id = $this->users->getIdForUsername(urldecode($id));
}

解决

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant