php - 在我的数据库中,希腊字母之后的所有内容都是空的
问题描述
我遇到了我确定是编码错误,但我似乎无法在我的逻辑中找到薄弱环节。特别是,当尝试将希腊 lambda 插入我的数据库时,该 lambda 之后的单元格是空白的。
过程:
在打印任何 html 之前,我正在做:
header('Content-Type: text/html; charset=utf-8');
接下来,我使用 PDO 进行连接:
$dsn = 'mysql:host=' . $config['host'] . ';dbname=' . $config['dbname'] . ';charset=utf8';
$options = array(
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
try {
$dbh = new PDO($dsn, $config['username'], $config['password'], $options);
$dbh->exec("SET NAMES utf8");
$dbh->exec("SET FOREIGN_KEY_CHECKS = 1");
当我做
显示来自 my_table 的完整列
我可以看到排序规则是 utf8_general_ci。当我做:
echo mb_detect_encoding($data_to_be_entered);
我得到 UTF-8
当我在将 $data_to_be_entered 插入数据库之前将其回显到控制台时,我看到: (=23)
但是,在我的数据库中,我只看到 ( 作为条目。
解决方案
那个 lambda是数学符号。它以 UTF-8 编码为四个字节 hex
F09D9C86
。因此,它需要 MySQL CHARACTER SET utf8mb4
,而不是 utf8。
如果您想要希腊语 lambda λ
,则可以使用CHARACTER SET utf8
(或 utf8mb4)。它的十六进制是CEBB
.
推荐阅读
- r - 在嵌套 dplyr 数据集中运行配对 t 检验的问题
- python - 重新分配 numpy.array()
- javascript - 在javascript中匹配正则表达式并过滤掉一个字符
- arrays - PIL的fromarray()函数中的动态范围(位深度)?
- python - 如何在 Mongoengine 中对 EmbeddedDocumentListField 对象进行分页?
- python - 将 period[Q-DEC] 列转换为数据框到 Python 中的字符串
- java - spring-boot-starter-data-mongodb-reactive 从 application.yml 设置密钥库密码以使用 X509 进行连接
- javascript - 在 React-bootstrap 中单击 Dropdown.Item 后防止关闭
- python - 弃用警告:在 Windows 10 系统上通过 Selenium 使用 ChromeDriver 和 Chrome 时使用选项而不是 chrome_options 错误
- python - Matplotlib:在注释上方渲染补丁