一组歌曲的路径,已经从文件系统导入到 mongodb 里。 后端 python 从 mongodb 读出来供 web js 读取。 发现有几首歌放不出,看后台 nginx 的日志是 404 ,找不到文件。 F12 把路径拷出来,肉眼看路径是对的,但是 urlencode 后和正确的确是有不同,不知道为啥? urlencode ,第一行可以读取,第二行报 404. 解码结果是一样的!!!
猜测是 unicode 编码的问题,但是不确定怎么解决。
1 soudesuka 2022-02-07 20:09:54 +08:00 我猜测是 文件路径 中的 ピ 和 ド 被拆解成 ヒ 与 和 ト 与 了吧。 详见请搜索 Unicode equivalence |
2 lidlesseye11 2022-02-07 22:06:20 +08:00 建议 lz 把文本贴上来。你这两张图片怎么搞。。 |
![]() | 3 ClericPy 2022-02-07 22:35:40 +08:00 是 quote 和 quote_plus 的问题? 话说先搞明白是前端输入错误还是后端解码错误? 提问题直接给例子吧 输入: xxx, 期望: xxx, 错误: xxx |
![]() | 4 imn1 2022-02-07 22:55:04 +08:00 #1 +1 ピ(30d4) 分解成 ヒ(30d2) 和 '' (309a)两个字符 处理日语字符,这事情很常见,做个预案吧 |
5 elboble OP 如果是这样,是不是汉字 unicode 也存在这个问题。日语一点不懂,是不是应该存在一个通用的做法? |
![]() | 6 sagaxu 2022-02-08 08:50:33 +08:00 via Android 文件名和请求路径就不该出现[a-z0-9_]以外的字符,其它信息可以作为元数据存储在 db 里 |
![]() | 7 yogogo 2022-02-08 09:10:23 +08:00 用参数带文件名吧 |
8 soudesuka 2022-02-08 10:34:34 +08:00 Python 函数 unicodedata.normalize(form, unistr) 返回 Unicode 字符串 unistr 的正常形式 form 。form 的有效值为 'NFC' 、 'NFKC' 、 'NFD' 和 'NFKD' 。 NFC:Normalization Form Canonical Composition (以标准等价方式来分解,然后以标准等价重组之) NFD:Normalization Form Canonical Decomposition (以标准等价方式来分解) 第一个路径 = unicodedata.normalize('NFC', 第二个路径) 第二个路径 = unicodedata.normalize('NFD', 第一个路径) |