Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL数据库中以阿拉伯语保存数据_Mysql_Arabic_Character Encoding - Fatal编程技术网

在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,

我已经更改了表格和列的字符集,我得到的阿拉伯文文本是????MYSQL数据库中的标记

这是桌子的设计图

  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数据库中的阿拉伯文本,请确保:

  • MySQL字符集:UTF-8 Unicode(utf8)

  • MySQL连接排序规则:
    utf8\u常规\u ci

  • 您的数据库和表排序规则设置为:
    utf8\u general\u ci
    utf8\u unicode\u ci

  • 然后,在连接到db时,在php脚本中添加以下代码:

    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);