Home >Backend Development >PHP Problem >What to do if php json saves Chinese garbled characters in the database

What to do if php json saves Chinese garbled characters in the database

PHPz
PHPzOriginal
2023-04-19 09:17:54729browse

During the development process, we may encounter situations where JSON data is stored in the database. This usually does not present a problem when dealing with English strings, but when we involve Chinese characters, we may encounter garbled characters. This article will introduce how to solve the JSON garbled problem that occurs when storing Chinese characters into a MySQL database.

  1. Database character set

First, we need to confirm whether the database character set is correct. The default character set of MySQL is Latin1, which does not support Chinese character sets. If your encoding is not UTF-8, you will need to change MySQL's character set. In the MySQL command line, enter the following command to change the character set:

SET NAMES 'utf8';

Then execute the following command:

ALTER DATABASE `your_database` CHARACTER SET utf8 COLLATE utf8_general_ci;
  1. Encoding issues

Another FAQ It's an encoding issue. Your text editor may use a different encoding than the server, or may use a different encoding than the MySQL database. To avoid garbled characters, make sure all files use the same encoding. For php files, we recommend using UTF-8 encoding.

  1. Storing JSON data into the database

During the development process, the best way to store JSON data is to convert the data into a JSON string through PHP's json_encode function , and then insert it into the database table. For Chinese characters, UTF-8 encoding format is required.

The following is a sample code to store JSON data into a MySQL database:

//连接数据库
$conn = mysqli_connect($servername, $username, $password, $dbname);

//设置字符集
mysqli_set_charset($conn, "utf8");

//将 JSON 数据转换为字符串
$json_data = json_encode($data, JSON_UNESCAPED_UNICODE);

//插入数据到数据库表中
$sql = "INSERT INTO `table` (`id`, `data`) VALUES (NULL, '$json_data')";
$result = mysqli_query($conn, $sql);

//关闭数据库连接
mysqli_close($conn);
  1. Reading JSON data

When you want to read the data stored in the database When working with JSON data in a JSON string, you can use PHP's json_decode function to convert the JSON string into a PHP array or object. Note that when using json_decode, the second parameter needs to be set to true to ensure that the data is returned as an array rather than an object.

The following is a sample code for reading JSON data from a MySQL database:

//连接数据库
$conn = mysqli_connect($servername, $username, $password, $dbname);

//设置字符集
mysqli_set_charset($conn, "utf8");

//查询数据库
$sql = "SELECT `data` FROM `table` WHERE id = '1'";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);

//将 JSON 字符串转换为 PHP 数组
$json_data = json_decode($row['data'], true);

//关闭数据库连接
mysqli_close($conn);

Summary:

When storing JSON data, ensure that the database character set is UTF-8. The text editor uses the correct encoding format and uses PHP's json_encode function to convert the data to a JSON string. When reading JSON data, use PHP's json_decode function to convert the JSON string into a PHP array.

The above are some tips to solve the JSON garbled problem that occurs when storing Chinese characters into the MySQL database. We hope these tips will be helpful to you.

The above is the detailed content of What to do if php json saves Chinese garbled characters in the database. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn