我正在开发一个网站,让人们可以创建自己的翻译器。他们可以选择 URL 的名称,并将其发送到数据库,我使用 .htaccess 进行重定向website.com/nameoftheirtranslator
至:
website.com/translator.php?name=nameoftheirtranslator
这是我的问题:
最近,我注意到有人创建了一个名称中带有特殊字符的翻译器 -> “LAEFÊVËŠI”。
但是当它被处理(发布到一个 php 文件,然后mysqli_real_escape_string
)并添加到数据库时,它显示为简单的“LAEFVI” - 所以你可以看到特殊字符在某个地方丢失了。
我不太确定在这里做什么,但我认为有两条路径:
- 尝试保留字符并进行一些编码(不知道从哪里开始)
- 抛弃他们并告诉用户在他们的翻译名称中只使用“正常”字符(不理想)
我想知道是否有可能有一个类似的网址website.com/LAEFÊVËŠI
- 服务器可以解释它吗?
EDIT1:我注意到堆栈溢出,在这个问题上,将我标题中的特殊字符翻译为.../using-special-characters-in-urls
!这似乎是一个很好的解决方案,我想我可以创建一个函数,将 â 之类的特殊字符转换为它们的正常等效字符(如 â)?而且我想我会忽略其他角色,例如/#@"',&
?现在我想到了,必须有一些相当标准/良好实践的策略来解决这样的问题。
EDIT2: 实际上,现在我考虑了一下(更多) - 我真的希望这个东西可以被任何语言(不仅仅是英语)的人使用,所以我真的很希望能够在网址中包含特殊字符。话虽如此,我刚刚发现谷歌不解释â
为,所以如果我不将字母翻译成普通字符a
,人们可能很难找到翻译。LAEFÊVËŠI
啊!