“ascii”编解码器无法解码位置942中的字节0xdb:序号不在范围(128)sql查询中

2024-06-26 17:56:06 发布

您现在位置:Python中文网/ 问答频道 /正文

因为我在查询中使用了一些阿拉伯语脚本,Python无法将阿拉伯语字符解码为ASCII,python2默认使用bytestrings(ASCII)字符串,它只支持拉丁字符。Python3默认使用Unicode字符串。在

查询:

query = """SELECT * FROM (
               SELECT p.ID AS 'persons_ID', 
                 p.FirstName AS 'persons_FirstName', 
                 p.LastName AS 'persons_LastName',
                 p.NationalCode AS 'persons_NationalCode', 
                 p.CityID AS 'persons_CityID', 
                 p.Mobile AS 'persons_Mobile',
                 p.Address AS 'persons_Address', 
                 cities_1.ID AS 'cities_1_ID', 
                 cities_1.Name AS 'cities_1_Name',
                 cities_1.ParentID AS 'cities_1_ParentID', 
                 cities_2.ID AS 'cities_2_ID', 
                 cities_2.Name AS 'cities_2_Name',
                 cities_2.ParentID AS 'cities_2_ParentID' , 
                 cast(@row := @row + 1 as unsigned) as 'persons_row_number'                                                                              
               FROM Persons p 
               LEFT OUTER JOIN cities AS cities_2 
               ON cities_2.ID = p.CityID 
               LEFT OUTER JOIN cities AS cities_1 
               ON cities_1.ID = cities_2.ParentID , (
                 select @row := 0) as init WHERE 1=1
                 AND p.FirstName LIKE N'{}%'""".format('رامین')

我使用format('khazامین')我从MysqlDB得到错误UnicodeEncodeError


Tags: 字符串namefromidasasciifirstname字符