我正在尝试将字符串“ಕನ್ನಡ”存储到mySQL数据库中。 它被存储为“ಕನà³à²¨à²” 但它在html上正确呈现为“ಕನ್ನಡ”。 是否可以在数据库中将其存储为“ಕನ್ನಡ”而不是“ಕನà³à²¨à²”?如是。怎么样?如果您需要有关整理的更多信息,请询问。
存储字符串的列的字符集是'utf8_unicode_ci'
答案 0 :(得分:1)
您可以检索它们并正确显示它们意味着它们被正确存储。
我猜你用来验证数据的其他tool
会错误地显示数据。
这可能是PhpMYAdmin连接设置中的问题。它也必须明确设置为UTF-8。请参阅How to display UTF-8 characters in phpMyAdmin?
中接受的答案答案 1 :(得分:0)
有关如何将默认字符集和排序规则设置为utf,请在my.cnf中添加以下行描述部分并重新启动MySQL服务。
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
请记住已经存在的数据库& table不会更改charset和collation,并且在现有数据库中创建的表将具有该数据库的charset。
但是新创建的数据库和表将具有默认字符集和utf的整理。
示例:
mysql> create database demo1;
Query OK, 1 row affected (0.00 sec)
mysql> show create database demo1 \G
*************************** 1. row ***************************
Database: demo1
Create Database: CREATE DATABASE `demo1` /*!40100 DEFAULT CHARACTER SET utf8 */
1 row in set (0.00 sec)
mysql> use demo1
Database changed
mysql> create table test_char(data_to_insert CHAR(50)) ;
Query OK, 0 rows affected (0.26 sec)
mysql> show create table test_char\G
*************************** 1. row ***************************
Table: test_char
Create Table: CREATE TABLE `test_char` (
`data_to_insert` char(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
mysql> INSERT INTO test_char VALUES('ಕನ್ನಡ');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM test_char;
+-----------------+
| data_to_insert |
+-----------------+
| ಕನ್ನಡ |
+-----------------+
1 row in set (0.00 sec)