Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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
在python中转换为阿拉伯文文本_Python_Mysql_Pyspark_Pyspark Sql - Fatal编程技术网

在python中转换为阿拉伯文文本

在python中转换为阿拉伯文文本,python,mysql,pyspark,pyspark-sql,Python,Mysql,Pyspark,Pyspark Sql,我在mysql表中使用字符集-utf-8存储数据。我有一个pyspark脚本,它加载mysql数据并在s3 bucket中编写拼花文件。从mysql获取数据时,我在下面获取数据 格式: 然后我将其转换为utf-8编码,我得到以下unicode字符串: '\xc3\x98\xc2\xa7\xc3\x99\xe2\x80\x9e\xc3\x98\xc2\xb4\xc3\x98\xc2\xb1\xc3\x99\xe2\x80\x9a\xc3\x99\xc5\xa0\xc3\x98\xc2\xa9'

我在mysql表中使用字符集-utf-8存储数据。我有一个pyspark脚本,它加载mysql数据并在s3 bucket中编写拼花文件。从mysql获取数据时,我在下面获取数据 格式:

然后我将其转换为utf-8编码,我得到以下unicode字符串:

'\xc3\x98\xc2\xa7\xc3\x99\xe2\x80\x9e\xc3\x98\xc2\xb4\xc3\x98\xc2\xb1\xc3\x99\xe2\x80\x9a\xc3\x99\xc5\xa0\xc3\x98\xc2\xa9'
之后,我将其解码为mac_阿拉伯语编码,然后得到以下文本:

'أ»آ'أôقÄûأ»آ٤أ»آ١أôقÄöأôإ أ»آ)'
有没有办法从这些字符串中的任何一个生成阿拉伯语文本

下面是代码

sqlContext = SQLContext(sc)
df = sqlContext.read.format("jdbc").options(
                                       url="jdbc:mysql://localhost/db_name",
                                       driver="com.mysql.jdbc.Driver",
                                       dbtable="table",
                                       user="root",
                                       password="root"
                                      ).load()

df.show()
对于下表中的列,已设置配置: 字符集utf8mb4比较utf8mb4\u unicode\u ci默认为空

为数据库设置以下配置: ENGINE=InnoDB AUTO_INCREMENT=42627默认字符集=1


提前感谢。

您平台上的JDBC驱动程序版本默认不使用UTF-8编码。如上所述,请尝试显式地将编码传递给驱动程序:

df = sqlContext.read.format("jdbc").options(
    url="jdbc:mysql://localhost/db_name?characterEncoding=utf8",
    driver="com.mysql.jdbc.Driver",
    dbtable="table",
    user="root",
    password="root").load()

如何加载和写入第一个字符串?向我们展示您使用的代码。如果您的初始字符串是utf-8编码的,则必须使用相同的编码对其进行解码,即utf-8。@MehdiSadeghi我正在使用sqlContext.read.formatjdbc.options.load在dataframe中获取整个表。第一个文本是我在运行上述命令后从mysql表中得到的值。请在您的问题中添加一段工作代码。包括数据库配置。首先,您是如何将字符串添加到数据库的?如何配置sqlContext?你印刷得怎么样?哪个客户端等。顺便说一句,你的第一个字符串是乱七八糟的,没有编码,解码会将它转换回阿拉伯语。@MehdiSadeghi我已经添加了代码。请检查。@MehdiSadeghi您还需要其他信息吗?
df = sqlContext.read.format("jdbc").options(
    url="jdbc:mysql://localhost/db_name?characterEncoding=utf8",
    driver="com.mysql.jdbc.Driver",
    dbtable="table",
    user="root",
    password="root").load()