Сохранить японские символы в MySQL
Я использую PHP для выполнения предложения обновления MySQL с испанскими, английскими и японскими символами.
Но я не могу сохранить японские символы в базе данных. Как мне поступить?
База данных имеет сортировку utf8_general_ci.
$strSQL = "UPDATE table SET value = '" . addslashes($strValue) . "'";
$strSQL = utf8_decode($strSQL);
mysqli_query($cnn, $strSQL);
С addslashes
Я могу получить апострофы для сохранения в базе данных.
С utf8_decode
Я могу получить испанские символы для сохранения в базе данных.
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;
Таблица Charset:
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 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.
Полезные ссылки:
- PHP вставляет японскую строку в таблицу utf8 как-то еще, но все равно успешно читает
- http://php.net/manual/en/function.mysql-set-charset.php
- https://www.w3schools.com/php/func_mysqli_set_charset.asp
- PHP mysql charset utf8 проблемы
- 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