php - 使用 MySQL/PHP 的 urlencoding 问题

标签 php mysql encoding utf-8

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

  1. 文本文件均采用 UTF-8 编码。
  2. PHP 脚本也全部采用 UTF-8 编码。我读到这非常重要。
  3. 所有 HTML 输出都是使用如下 header 完成的:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. MySQL 数据库是使用 latin1_swedish_ci 排序规则创建的(字符集留空)
  5. 所有包含字符 (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;转换将在 INSERTingSELECTing 时发生,但需要 #6 才能知道这样做。

    关于php - 使用 MySQL/PHP 的 urlencoding 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40440178/

    相关文章:

    php - 如何在 foreach 循环内划分数组结果?

    php - 批量更新获取行id

    php - 将 php 代码链接到 html 页面

    php - PDO dblib 未捕获警告

    php发送带附件的邮件

    c# - 在 C# 中,如何在不破坏编码的情况下将网页保存到文件?

    python - 在 Python 2 中编码转义字符而不破坏 Unicode 的正确方法是什么?

    php/mysql - 多个文件上传没有正确插入到表中

    javascript - Sails.js 模型,从 mysql 数据库中选择特定的列

    java - csv中的字符编码