Html 网站显示';标准普尔27;是的,而不是韩语

Html 网站显示';标准普尔27;是的,而不是韩语,html,mysql,Html,Mysql,我把我的网站上传到了新服务器上。它在我家的测试服务器上运行得很好,没有其他设置,数据库是逐字复制的。但是在这个网站上,任何韩语的内容都显示为??。数据库正确地存储了它,而且所有页面都有我无法找出我缺少了什么 编辑:当我使用phpMyADMIN时,文本在数据库中显示良好。问题很可能是您的家庭测试服务器和新的远程服务器之间的数据库排序规则设置不同。这意味着,当数据库正确传输时,数据从数据库中吐出的方式完全是另一回事 数据库的数据整理给您带来了什么问题?默认情况下,大多数MySQL为新创建的数据库安装

我把我的网站上传到了新服务器上。它在我家的测试服务器上运行得很好,没有其他设置,数据库是逐字复制的。但是在这个网站上,任何韩语的内容都显示为
??
。数据库正确地存储了它,而且所有页面都有
我无法找出我缺少了什么


编辑:当我使用phpMyADMIN时,文本在数据库中显示良好。问题很可能是您的家庭测试服务器和新的远程服务器之间的数据库排序规则设置不同。这意味着,当数据库正确传输时,数据从数据库中吐出的方式完全是另一回事

数据库的数据整理给您带来了什么问题?默认情况下,大多数MySQL为新创建的数据库安装set
latin1\u swedish\u ci
,而不是
utf8\u general\u ci

更改数据库的排序规则并重试

ALTER DATABASE [name of your database] CHARACTER SET utf8;
如果这是一个特定的表,则可以按如下方式更改排序规则:

ALTER TABLE [name of your table] CONVERT TO CHARACTER SET utf8;
如果它是表中的特定列:

ALTER TABLE [name of your table] MODIFY [name of your column] [other settings] CHARACTER SET utf8 COLLATE utf8_general_ci;
或者,您可以导出当前数据库,使用以下命令创建新数据库并重新导入数据:

CREATE DATABASE [name of your database] CHARACTER SET utf8 COLLATE utf8_general_ci;
如果您想对机器上的MySQL安装进行永久性的更改,从而产生问题,请点击编辑
my.cnf
。以下内容将整个链设置为UTF-8:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
编辑:原始海报声明连接和数据库都是UTF8清洁的。但是,尝试编辑Apache默认字符集怎么样。转到此处并打开Apache的字符集文件,如下所示:

sudo nano/etc/apache2/conf.d/charset

并取消注释如下所示的行:

#AddDefaultCharset UTF-8
AddDefaultCharset UTF-8
看起来是这样的:

#AddDefaultCharset UTF-8
AddDefaultCharset UTF-8
然后重新启动Apache。在我看来,这对于长期设置来说不是一个好主意,但是如果t解决了这个问题,它表明您的代码库中有一些东西可以更改以影响相同的结果,而不必强制Apache强制UTF8。

在PDO(php api)中,您需要set charset
$conn->exec('set CHARACTER set UTF8')

PHP示例:

<?php
//한국어/조선말

header('Content-Type: text/html; charset=utf8');

$username = 'user';
$password = 'password';
$host = 'domain';
$db = 'dbtest';

try {
    $conn = new PDO('mysql:host=' . $host . ';dbname=' . $db . ';charset=utf-8', $username, $password);
    $conn->exec('SET CHARACTER SET utf8');//This solve the problem
    $stmte = $conn->prepare('SELECT id, text FROM test LIMIT 10');
    $exec = $stmte->execute();

    if ($exec) {
        while($reg = $stmte->fetch(PDO::FETCH_OBJ)){
            echo 'id: ' . $reg->id . '<br />';
            echo 'text: ' . $reg->text . '<br /><hr />';
        }
    } else {
        echo 'Error SELECT';
    }
} catch(PDOException $e){
    echo 'PDOException: ', $e->getMessage();
}
?>
在服务器中使用以验证服务器上的数据库是否为“utf8”,请参阅:

您的数据库中必须有其他内容

如果您的数据库是正确的(在使用utf8检查之后),那么问题出在某个PHP文件中

要解决此问题,应保存所有php文件(包括主文件和包含文件)

将html文件(或php文件)保存在“utf8无boom”中,使用,请参阅:

添加PHP文件(在顶部文件中):


包括的文件应保存在utf8中,不带boom,例如:

<?php
include('YOUR FILE INCLUDED.php');// Save "YOUR FILE INCLUDED.php" in UTF8-without-boom
?>

也许它的某个页面是ANSI(例如“form.php”)

注意:所有PHP文件必须是UTF8格式,不带boom格式


尝试将
lang
属性添加到
html
标记中

<html lang="ko">


此问题的答案也可能重复。最初的海报上写着:“它在我家的测试服务器上运行得非常好。”这意味着文件本身保存正确。不需要任何反对票,我们只是想帮助你。不要那么激进。[编辑]非常“在线出版商”保存文件时不使用utf8(保存为“拉丁语”)。我不能确定他做错了什么。谢谢你的帮助,但我不认为这是问题所在。我总是将字符集设置为UTF-8,这已成为习惯,因为我总是用日语或韩语工作。顺便说一句,我没有投你反对票,我从来没有在这件事上投过任何人的反对票site@chris3spice如果您的php文件不在utf8中,则数据将保存在“latin1”中,您必须将文件保存为包含(
include('file_inc.php');
)在utf8中,没有boom,我编辑了我的答案。试试phpmyadmin,可能表是utf8格式的,但字段是拉丁文的,这并没有解决问题。我已经检查了每个表,并将我的设置与家庭测试服务器完全匹配,但它仍然不工作。您是否在
my.cnf
中检查了MySQL配置?然后重新启动MySQL服务器了吗?另外,您的脚本语言是什么?PHP?如果是PHP,您的连接接口是什么?您可以显式地将连接设置为UTF8,如下所示:
mysqli\u查询($dbcon,“set NAMES'UTF8'”)是的,我确实更改了my.cnf,并重新启动了整个服务器。脚本是在PHP中完成的,一些页面是使用JQuery在后台加载的。我的接口是
$conn=newpdo('mysql:host=localhost;dbname=kumiho;charset=utf8',$username,$password)
Nope仍然不工作,通过apache设置,删除数据库并从头开始创建,一些手工输入的测试数据仍然无法使用。奇怪的是,我用了一个超旧的数据库,我用了一种奇怪的方式转换了韩语。。。如果它在数据库中看起来像
ìì–“ì´
,它可能会显示韩文,但我在设置中找不到区别,我的本地环境是一个虚拟服务器,运行与真实服务器一样,运行到相同的操作系统。我可以,但你必须注册才能访问任何显示韩文的页面,但www.kumihangul.com除外