我有一个与来自世界各地的客户打交道的应用程序,自然,我希望进入数据库的所有内容都采用UTF-8编码。
对我来说,主要问题是我不知道任何字符串的编码源是什么-它可能来自文本框(<form accept- charset="utf-8">仅在用户实际提交表单时才有用),或者可能是从上传的文本文件中获取,因此我真的无法控制输入。
<form accept- charset="utf-8">
我需要的是一个函数或类,以确保进入数据库的内容尽可能采用UTF-8编码。我试过了,iconv(mb_detect_encoding($text), "UTF-8", $text); 但是有问题(如果输入为’fiancée’,则返回’fianc’)。我已经尝试了很多东西= /
iconv(mb_detect_encoding($text), "UTF-8", $text);
对于文件上传,我喜欢让最终用户指定他们使用的编码,并向他们显示输出结果的预览的想法,但这无助于讨厌的黑客(实际上,这可能会使他们的生活变糟。容易一点)。
我已经阅读了关于该主题的其他SO问题,但是它们似乎都具有细微的差异,例如“我需要解析RSS feed”或“我从网站上抓取数据”(或者实际上是“您不能”)。
但是必须至少 尝试一下 !
您要的是非常困难的。如果可能的话,最好让用户指定编码。用这种方法来阻止攻击应该不会变得容易或困难得多。
但是,您可以尝试执行以下操作:
iconv(mb_detect_encoding($text, mb_detect_order(), true), "UTF-8", $text);
将其设置为严格可能会帮助您获得更好的结果。