【问题标题】:insert korean characters to mysql将韩文字符插入mysql
【发布时间】:2012-06-26 06:40:48
【问题描述】:

我想在 MySQL 中插入一些短语

第一个字段是英语,第二个字段是韩语。每次我从我的 PHP 脚本中插入值时都会出现问题,它会像这样在 MYSQL 中显示。 학교

但是,如果我从 PhpMyAdmin 插入相同的韩语值,它将起作用,所以问题来自 php 脚本。我在网上发现我必须在 MySQL 中更改 Collation

有什么帮助吗?

<?

//*---------------------------------------------------------*\\
//* if POST
//*---------------------------------------------------------*\\
if($_POST['addphrase'])
{
    $SQL = "INSERT INTO `sd_phrases` VALUES(NULL,?,?)";
    $db = new db();
    $db->execute($SQL,$_POST['english'],$_POST['korean']);
    $box = new true_box();
    $box->init('PLease Wait....','index.php?action=phrases');
    die();
}

?>
<form method="post">
<center>
    <table class="horz">
    <tr><th colspan="2">Add a new Phrase</th></tr>
    <tr><td>English Phrase</td><td><div align="left"><input type="text" size="80" name="english"></div>
    </td></tr>
    <tr><td>Korean Phrase</td><td><div align="left"><input type="text" size="80" name="korean"></div>
    </td></tr>
    <tr><td colspan="2"><input type="submit" value="Add" name="addphrase"></td></tr>
    </table>
</center>
</form>

【问题讨论】:

  • 能否展示相关的PHP代码?
  • @dusan 当然。只需刷新页面

标签: php mysql sql


【解决方案1】:

正如 Danack57 所说,排序规则应设置为 utf8_unicode_ci

您应该只使用 UTF8 作为您的字符编码方案。

default-character-set = utf8

打开每个mysql连接后,执行set names utf8; 阅读this

【讨论】:

  • 我在发布问题之前已将排序规则设置为euckr_korean_ci ,但从php转换为&amp;#54617;&amp;#44368;
  • 您是否尝试过使用 UTF8。当您获取 unicode 字符时,它应该正确显示。我已经编辑了我的答案。
  • 为了所有神圣的事物的爱 - 只需使用 UTF8 和 utf8_unicode_ci 作为排序规则。使用特定语言的字符集或排序规则不可避免地会失败。
【解决方案2】:

问题在于 html 页面向用户浏览器报告编码的方式。我怀疑一个报告为 utf8,另一个报告为其他编码。因此,当这些值从浏览器回传时,它们的编码方式不同。 Php 不进行编码,它或多或少地采用表单发布的内容。加载页面并检查网络浏览器中的编码,看看您是否可以让两个页面使用元标记报告相同的编码。

【讨论】:

  • 我建议对要插入的变量进行硬编码,以便您可以先检查 SQL 是否正常工作,然后再调试表单是否以 UTF8 格式单独提交。
猜你喜欢
  • 2012-12-26
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
  • 2016-11-01
  • 2016-06-30
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
相关资源
最近更新 更多