Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用spé;ci&xE2;URL中的l字符_Mysql_Url_Urlencode - Fatal编程技术网

Mysql 使用spé;ci&xE2;URL中的l字符

Mysql 使用spé;ci&xE2;URL中的l字符,mysql,url,urlencode,Mysql,Url,Urlencode,我正在开发一个可以让人们创建自己的翻译器的软件。他们可以选择URL的名称,并将其发送到数据库,我使用.htaccess重定向website.com/nameofirtranslator 致: website.com/translator.php?name=intertranslator的名称 这是我的问题: 最近,我注意到有人创建了一个名为->“LAEFÊVËŠI”的翻译人员 但是当它被处理(发布到一个php文件,然后mysqli\u real\u escape\u string)并添加到数据库

我正在开发一个可以让人们创建自己的翻译器的软件。他们可以选择URL的名称,并将其发送到数据库,我使用.htaccess重定向
website.com/nameofirtranslator

致:

website.com/translator.php?name=intertranslator的名称

这是我的问题:

最近,我注意到有人创建了一个名为->“LAEFÊVËŠI”的翻译人员

但是当它被处理(发布到一个php文件,然后
mysqli\u real\u escape\u string
)并添加到数据库时,它显示为简单的“LAEFVI”-因此您可以看到特殊字符丢失在某处

我不太确定该怎么办,但我认为有两条路:

  • 尝试保留字符并进行一些编码(不知道从哪里开始)
  • 抛弃它们,告诉用户在翻译人员的名字中只使用“普通”字符(不理想)
  • 我想知道是否有可能有一个像
    website.com/LAEFÊVËŠI
    这样的url-服务器可以解释吗

    EDIT1:我注意到,在这个问题上,堆栈溢出将我标题中的特殊字符转换为
    ../使用URL中的特殊字符
    !这似乎是一个很好的解决方案,我想我可以制作一个函数,将特殊字符(如-)转换为它们的普通等价物(如-)?我想我会忽略其他字符,比如
    /#@',&
    ?现在我想起来了,一定有一些相当标准/良好的实践策略来解决这样的问题


    EDIT2:事实上,现在我想起来了(更多)-我真的希望这个东西能被任何语言的人使用(不仅仅是英语),所以我真的很想在URL中有特殊的字符。说到这里,我刚刚发现Google不会将
    解读为
    a
    ,所以如果我不将字母翻译成普通字符,人们可能很难找到
    LAEFÊVËŠI
    译者。啊!

    好吧,在那疯狂的书信之后德,事情是这样的:

    • 发现我正在用PHP
      preg\u replace()
      删除所有非字母数字字符
    • 更改了
      preg\u replace
      ,因此它只删除空格并使用
      rawurlencode()
    $name=mysqli\u real\u escape\u string($con,rawurlencode(preg\u replace(“/\s/”,“”,$name));

    • 现在一切都在数据库中编码,安全可靠
    • 使用此重写规则
      RewriteRule^([^/]+)$process.php?name=$1[B]
    • 绕圈子跑了两个小时,觉得我的重写错了,因为我得到了“找不到页面”
    • 意识到
      process.php
      没有
      rawurlencode()
      来读取
      名称
    $name=rawurlencode($\u GET['name']);

    现在它起作用了

    求爱!
    睡眠时间。

    可能是重复的我对这个答案有点太新手了,对不起。我几乎不知道unicode是什么。编辑:它确实有帮助,只是让我一路忙个不停等等,现在我很困惑——关于这个问题的第三个答案是,URL中的
    unicode字符
    等于
    これは、これを日本人のテキストです?服务器是否有从日语到英语的逐字翻译?这是如何工作的?也许这需要一个新的问题…编辑:哦,没关系,这是错误的。堆栈溢出不关心url中问题id后面的内容。所以,基本上,我不知道发生了什么。嗯?等等,我只是使用这个
    urlencode()
    功能,dn一切都能正常工作吗?