使用MySQL / PHP进行urlencoding的问题

时间:2016-11-05 15:49:53

标签: php mysql encoding utf-8

我有一些文本文件是MySQL数据库的输入。这些文本文件包含é和ë等字符。我一直在努力将数据正确地存入数据库,现在看来我终于把它弄好了。但是,我想知道有没有比我在这里描述的方式更好的方法。

  1. 文本文件都是UTF-8编码。
  2. PHP脚本也都是UTF-8编码的。我读过这个非常重要。
  3. 所有HTML输出都是使用如下标题完成的:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. 使用latin1_swedish_ci的排序规则创建MySQL数据库(字符集留空)
  5. 包含字符(VARCHAR)的所有列都使用latin1_swedish_ci的排序规则定义
  6. 我认为存储url编码字符串的正确方法是当我在数据库中看到字符é存储为%C3%A9时。我找到了urlencoding here的MySQL函数。 但是当我打开phpMyAdmin时,我看到角色é显示为%C3%A3%C2%A9。

    我可以添加另一个语句来替换数据库中的字符,但有些东西告诉我有一种更有效的方法来实现这一点。

    非常感谢任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您的5件事清单中缺少的是

  1. 我告诉mysql客户端字节是utf8编码的。我是通过$mysqli_obj->set_charset('utf8');new PDO('dblib:host=host;dbname=db;charset=UTF8', $user, $pwd);SET NAMES utf8执行此操作的。 (或utf8mb4)。
  2. 客户端看到utf8,表格看到latin1;转换将在INSERTingSELECTing时进行,但需要#6才能知道这样做。