我有一些文本文件,它们是 MySQL 数据库的输入。这些文本文件包含 é 和 ë 等字符。我一直在努力将数据正确地存入数据库,现在看来我终于做对了。但是,我想知道是否有比我在这里描述的方法更好的方法。
- 文本文件均采用 UTF-8 编码。
- PHP 脚本也全部采用 UTF-8 编码。我读到这非常重要。
- 所有 HTML 输出都是使用如下 header 完成的:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- MySQL 数据库是使用 latin1_swedish_ci 排序规则创建的(字符集留空)
- 所有包含字符 (VARCHAR) 的列均使用 latin1_swedish_ci 排序规则定义
我认为存储 url 编码字符串的正确方法是当我看到字符 é 在数据库中存储为 %C3%A9 时。我发现了一个用于urlencoding的MySQL函数here 。 但是当我打开 phpMyAdmin 时,我看到字符 é 显示为 %C3%A3%C2%A9。
我可以添加另一个语句来替换数据库中的字符,但有些东西告诉我有一种更有效的方法来实现这一点。
非常感谢任何帮助。提前致谢。
最佳答案
您的 5 件事 list 中缺少的是
- 我告诉 mysql 客户端字节是 utf8 编码的。我通过
$mysqli_obj->set_charset('utf8');
或new PDO('dblib:host=host;dbname=db;charset=UTF8', $user, $pwd );
或设置名称 utf8
。 (或 utf8mb4)。
客户端看到utf8,表看到latin1;转换将在 INSERTing
和 SELECTing
时发生,但需要 #6 才能知道这样做。
关于php - 使用 MySQL/PHP 的 urlencoding 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40440178/