【问题标题】:Will this encoding be a problem in the future?这种编码将来会成为问题吗?
【发布时间】:2010-06-03 22:15:01
【问题描述】:

我在一个 php 文件中有这个函数:

mysql_query("SET NAMES 'utf8'") or die(mysql_error()); 
mysql_query("SET CHARACTER SET 'utf8'") or die(mysql_error());

    some stuff happening here,

rename($src, $dest.$cat);

这是在服务器上,是我今天的设置(至少在我的浏览器上)。

现在,在我的本地机器(我自己的带有 wampserver 的笔记本电脑)上,除非我这样做,否则这将无法正常工作:

mysql_query("SET NAMES 'utf8'") or die(mysql_error()); 
mysql_query("SET CHARACTER SET 'utf8'") or die(mysql_error());

      some stuff happening here

$cat=utf8_decode($category);
rename($src, $dest.$cat);

我在这个 php 文件中也有 meta=utf-8

$cat 从 mysql_query 获取其内容...

我想知道区别(为什么它在服务器和本地机器上的工作方式不同)?

我想知道这是否会在不同用户的浏览器上导致问题,通过它的方式

【问题讨论】:

  • 这真的是一个安全问题吗?

标签: php mysql html database security


【解决方案1】:

Windows 中的文件系统操作要求您在 Windows 正在使用的代码页中指定路径/​​文件名。

所以我猜您的代码页可能类似于 cp1252,因此您必须使用 utf8_decode。请注意,很遗憾,您不能将 Windows 的代码页设置为 UTF-8 (65001)。

另一方面,在 Linux 上,您可以使用任何您想要的编码。但是,您必须保持一致——如果您使用 UTF-8 文件名保存文件,则必须使用相同的字节序列读取它。

【讨论】:

    【解决方案2】:

    HTML 标记SQL 查询 都不会影响 文件系统 操作。

    这可能是文件系统问题。 Windows 可能会重新编码您的文件名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多