【问题标题】:greek characters not appearing correctly to/from database - html, php, mysqli希腊字符无法正确出现在/从数据库中 - html、php、mysqli
【发布时间】:2015-05-25 20:38:38
【问题描述】:

我的数据库有排序规则utf8-general-ci [我也试过greek-general-ci,结果更差]。

当我直接通过 phpMyAdmin 插入带有希腊值的行时,它会出现在我的 html 页面上,如下所示:'??????'。

当我通过我的 html 表单插入一行时,它会在 html-outcome 页面上正确显示,但在 phpMyAdmin 上它看起来像这样:'ΜαÏία'。

我可以解决这个问题,因为我只是为一个大学项目做这个,所以我可以通过我的 html 表单插入所有行,但我真的很好奇为什么会发生这种情况。

在我的 html 文件中 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 当我的 php 文件中有 header('Content-Type: text/html; charset=utf-8'); 时,它严重干扰了我的页面,所以我不能包含它。也尝试包含$mysqli->set_charset("utf8");,但只出现错误。

我也检查了Greek characters encoding works in HTML but not in PHP,但我们没有同样的问题。但是我应该更改 httpd.conf 文件吗?

【问题讨论】:

    标签: php html mysqli utf-8 phpmyadmin


    【解决方案1】:

    首先检查您的表格的排序规则。它没有链接到数据库排序规则。 您的表格排序规则也应该是 utf8-general-ci。

    <? header('Content-Type: text/html; charset=utf-8'); 
    $mysqli->set_charset("utf8"); ?>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    

    当所有这四个设置都处于活动状态时; 您应该能够成功插入、更新或读取 UTF-8 INSERTED 数据

    我猜你的问题是因为你的旧数据不是 utf-8 编码的。 您应该创建一个批处理脚本;

    1. 从表中选择所有数据
    2. 使用mb_convert_encoding将其转换为utf-8
    3. 并更新旧数据

    修复您的数据。

    【讨论】:

    • 感谢您的回答。您的第一个建议无效,我将尽快尝试批处理脚本。
    猜你喜欢
    • 2012-05-29
    • 2015-04-12
    • 2013-03-02
    • 2018-06-06
    • 2011-12-30
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多