将日文字符保存到 MySQL

Posted

技术标签:

【中文标题】将日文字符保存到 MySQL【英文标题】:Save Japanese characters into MySQL 【发布时间】:2019-05-16 14:53:48 【问题描述】:

我正在使用 php 执行带有西班牙语、英语和日语字符的 mysql 更新语句。

但我无法将日文字符保存到数据库中。我应该如何进行?

数据库有 utf8_general_ci 排序规则。

$strSQL = "UPDATE table SET value = '" . addslashes($strValue) . "'";
$strSQL = utf8_decode($strSQL);
mysqli_query($cnn, $strSQL);

使用addslashes,我可以将撇号保存到数据库中。

使用utf8_decode,我可以将西班牙语字符保存到数据库中。

【问题讨论】:

你绝对不应该使用addslashes,使用mysqli_real_escape_string。你也不应该使用utf8_decode,你需要确保你使用UTF-8作为你的数据库和页面编码。您可以在线 (phptherightway.com) 找到有关如何在 PHP 中使用 UTF-8 的信息 如果您在实施 Andrea 和 Max Base 建议的更改后仍然遇到问题,请查看 this 是否有帮助。 【参考方案1】:

为什么要处理utf8_decode() sql 查询?

查看http://php.net/manual/en/function.utf8-decode.php了解有关utf8_decode()

的详细信息

你必须检查几件事。

您的数据库和表格或您的 PHP 脚本是否有问题。

 

数据库:

CREATE DATABASE test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

表格字符集:

CREATE TABLE test.table
(
    id INT NOT NULL AUTO_INCREMENT,
    text VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE = MyISAM;

连接:

SET NAMES utf8;

例如:

$mysqli = new mysqli("localhost","my_user","my_password","test_db");
$mysqli->set_charset("utf8");

$link = mysqli_connect("localhost","my_user","my_password","test_db");
mysqli_set_charset($link,"utf8");

配置服务器的编码字符集:

使用 PHPMyAdmin ,登录时选择 UTF-8。

PHP 脚本:

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

Apache 配置(/etc/httpd/conf/httpd.conf):

AddDefaultCharset UTF-8

Apache .htaccess 文件:

AddCharset UTF-8 .htm
AddCharset UTF-8 .html
AddCharset UTF-8 .php

PHP 配置(/etc/php.ini):

default_charset = "utf-8"

MySQL 配置(/etc/my.cnf):

[client]
default-character-set=utf8

[mysqld]
default-collation=utf8_unicode_ci
character-set-server=utf8
default-character-set=utf8
init-connect='SET NAMES utf8'
character-set-client = utf8

用户价值观:

例如:$_GET$_POST

您可以使用mb_convert_encoding() 将您的字符串转换为UTF-8


有用的链接:

PHP inserting Japanese string to utf8 table as something else, but still reads it successfully

http://es2.php.net/manual/en/mysqli.set-charset.php

Select MySQL rows with Japanese characters

http://php.net/manual/en/function.mysql-set-charset.php

https://www.w3schools.com/php/func_mysqli_set_charset.asp

PHP mysql charset utf8 problems

https://medium.com/@adamhooper/in-mysql-never-use-utf8-use-utf8mb4-11761243e434

https://dev.mysql.com/doc/refman/8.0/en/faqs-cjk.html

https://www.experts-exchange.com/questions/24742133/How-to-insert-a-japanese-character-into-mysql-database.html

【讨论】:

以上是关于将日文字符保存到 MySQL的主要内容,如果未能解决你的问题,请参考以下文章

将日文字符从 TextBox 存储到 SQL 表

使用 PHP 和 MySQL 显示日文字符的问题

甲骨文写日文字符

windows日文系统如何打印日文字符?

Visual C++/MFC:让日文字符在没有 UNICODE 的情况下工作

将 JSON 字符串保存到 MySQL 数据库