将日语字符保存到MySQL中

时间:2018-12-15 16:08:28

标签: php mysql mysqli unicode cjk

我正在使用PHP执行带有西班牙语,英语和日语字符的MySQL更新语句。

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

  

数据库具有utf8_general_ci排序规则。

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

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

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

1 个答案:

答案 0 :(得分:2)

为什么要进行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");

OR

$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 Config(/etc/httpd/conf/httpd.conf):

AddDefaultCharset UTF-8

Apache .htaccess文件:

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

PHP Config(/etc/php.ini):

default_charset = "utf-8"

MySQL Config(/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


有用链接: