在MySQL数据库中以阿拉伯语保存数据
我已经更改了表格和列的字符集,我得到的阿拉伯文文本是????MYSQL数据库中的标记 这是桌子的设计图在MySQL数据库中以阿拉伯语保存数据,mysql,arabic,character-encoding,Mysql,Arabic,Character Encoding,我已经更改了表格和列的字符集,我得到的阿拉伯文文本是????MYSQL数据库中的标记 这是桌子的设计图 CREATE DATABASE mydb DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE TABLE `categories` ( `category_id` tinyint(2) NOT NULL auto_increment,
CREATE DATABASE mydb
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
CREATE TABLE `categories` (
`category_id` tinyint(2) NOT NULL auto_increment,
`category_name` varchar(50)character set utf8 NOT NULL ,
PRIMARY KEY (`category_id`)
insert into `mydb`.`categories`
(`category_id`, `category_name`)
values (1,'کتگوری');
commit;
当我再次激发选择查询时,它会显示????作为文本
有人能告诉我哪里做错了吗?确保您的客户端软件也在使用UTF-8
要使用php正确读取、写入和排序mysql数据库中的阿拉伯文本,请确保:
utf8\u常规\u ci
utf8\u general\u ci
或utf8\u unicode\u ci
mysql_query("SET NAMES 'utf8'");
mysql_query('SET CHARACTER SET utf8');
我们可以将数据库或db表转换为支持以下查询的uft8:
ALTER DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE tablename CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE columnname DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
希望有帮助
阅读更多@
手动将阿拉伯语数据插入Phpmyadmin 首先检查数据库、表和列名是否设置了utf8。 如果这些未设置为utf8,则首先设置它,然后可以将阿拉伯语数据插入db表 您可以通过查看下面的示例来检查其中的每一项。 对于数据库:
SELECT default_character_set_name FROM information_schema.SCHEMATA S
WHERE schema_name = "schemaname";
对于表格:
SELECT CCSA.character_set_name FROM information_schema.`TABLES` T,
information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA
WHERE CCSA.collation_name = T.table_collation
AND T.table_schema = "schemaname"
AND T.table_name = "tablename";
对于列:
SELECT character_set_name FROM information_schema.`COLUMNS` C
WHERE table_schema = "schemaname"
AND table_name = "tablename"
AND column_name = "columnname";
如果您使用的是SQLYog,那么可以很容易地将utf8设置到表中
只需右键单击db、table、column name,然后单击alter选项并设置为
数据库图表集=utf8
数据库排序规则=utf8\u常规\u ci
只需欣赏……将数据库表排序规则类型更改为
utf8\u general\u ci
,并将表字段排序规则更改为utf8\u general\u ci
请尝试以下代码:
$conn = new mysqli($server,$username,$password,$dbname);
$conn->set_charset("UTF8");
配置=新配置() //characterEncoding=UTF-8位于“jdbc:mysql://localhost:3306/alizidan?useSSL=false&characterEncoding=UTF-8“工作很好
settings.put(Environment.SHOW_SQL, "true");
settings.put(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread");
// settings.put(Environment.HBM2DDL_AUTO, "create-drop");
configuration.setProperties(settings);
哪个版本的mysql?如何显示文本?你能给出你用来取回数据的代码吗?我使用相同的编码和排序规则,对我来说效果很好。Mysql版本5.0.45。使用选择查询。。选择*from poll_categories这在MySQL WBIt中对我有效,应该有效。正如答案所示,确保在客户端使用正确的编码。您在这里使用的是什么客户端?在PHP中连接到MySql之后,执行
MySql\u set\u字符集('utf8',$con)代码>。但是请考虑远离<代码> MySqL<函数,它们在PHP7中被弃用,不再支持,请检查单个列字符编码,这是我在安静的时间里挠我的头。code>不要使用不推荐的mysql\u查询
;切换到mysqli
或PDO
。谢谢@Nadeem IjazHi@Waseem谢谢您的回答。你能解释一下为什么你的答案是好的,以及它是如何解决这个问题的吗!最后的ALTER
可能会更严重地破坏数据。看见
// Hibernate settings equivalent to hibernate.cfg.xml properties
Properties settings = new Properties();
settings.put(Environment.DRIVER, "com.mysql.cj.jdbc.Driver");
settings.put(Environment.URL, "jdbc:mysql://localhost:3306/alizidan?useSSL=false&useUnicode=yes&characterEncoding=UTF-8");
settings.put(Environment.USER, "root");
settings.put(Environment.PASS, "");
settings.put(Environment.DIALECT, "org.hibernate.dialect.MySQL5Dialect");
// does not work with my sql settings.put(Environment.HBM2DDL_CHARSET_NAME, "UTF-8");
settings.put(Environment.SHOW_SQL, "true");
settings.put(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread");
// settings.put(Environment.HBM2DDL_AUTO, "create-drop");
configuration.setProperties(settings);