Python recuperó datos de la base de datos que está codificada por latin1_swedish_ci en MySQL -- python campo con mysql campo con utf-8 campo con latin1 camp Relacionados El problema

Python retrieved data from database which is encoded by Latin1_swedish_ci in MySQL


0
vote

problema

Español

Tengo una base de datos que almacena texto con latin1_swedish_ci. Si recuperé los datos de esta base de datos por PHP (codificación en UTF-8), obtuve el resultado correcto

Aquí está el resultado:

Medido en Dungsha Coraisland (20 ° 42'n, 116 ° 43'e) Durante el Experimento South China Monsoon Monsoon (mayo-junio de 1998) se ha calibrado y se comparó con los cálculos de transferencia radiativa para tres días claros. < / p>

Sin embargo, cuando uso Python con el conector MySQL, obtuve el resultado equivocado!

Aquí está el resultado:

Flujos solares totales a la baja medidos en Dungsha Coraisland (20 ¢ X42¡|N, 116 ¢ X43¡|E) Durante el Experimento del Monzón del Mar del Sur de China (mayo-junio de 1998) se calibraron y se compararon con los cálculos de transferencia radiativa para tres días claros.

Actualmente, parte de mis códigos se ve así:

  cnx = mysql.connector.connect(host ='localhost',user='root', database='tao',charset='utf8',use_unicode='true') f = io.open("upload.xml",'w',encoding='utf-8') f.write(row[dic['abs']]+" ")   

¿Puede alguien ayudarme? Necesito recuperar todos los datos de la base de datos por Python y enviarlos en el archivo XML

Además, me pregunto por qué puedo obtener con éxito el resultado correcto (20 ° 42'n, 116 ° 43'e) por el eco de PHP? Ya he comprado los datos utilizando MySQL & GT; Seleccione ..., y el resultado también es como este 20 ¢ x42¡|n, 116 ¢ X43¡|E.

Original en ingles

I have a database storing text with Latin1_swedish_ci. If I retrieved the data from this database by php (encoding in utf-8), I got the correct result

Here is the result:

measured at Dungsha coraisland (20xc2xb042xe2x80x99N, 116xc2xb043xe2x80x99E) during the South China Sea Monsoon Experiment (May-June 1998) have been calibrated and compared with radiative transfer calculations for three clear-sky days.

However, when I use python with mysql connector, I got the wrong result!

Here is the result:

Downward total solar fluxes measured at Dungsha coraisland (20xc2xa2X42xc2xa1xc2xa6N, 116xc2xa2X43xc2xa1xc2xa6E) during the South China Sea Monsoon Experiment (May-June 1998) have been calibrated and compared with radiative transfer calculations for three clear-sky days.

Currently,part of my codes look like this:

cnx = mysql.connector.connect(host ='localhost',user='root', database='tao',charset='utf8',use_unicode='true') f = io.open("upload.xml",'w',encoding='utf-8') f.write(row[dic['abs']]+"\n") 

Can someone help me? I need to retrieve all the data from the database by Python and output them into the xml file

Moreover, I am wondering why I can successfully get the correct result (20xc2xb042xe2x80x99N, 116xc2xb043xe2x80x99E) by php's echo? I have already check the data by using mysql> select..., and the result is also like this 20xc2xa2X42xc2xa1xc2xa6N, 116xc2xa2X43xc2xa1xc2xa6E.

           
         
         

Lista de respuestas

1
 
vote

yikes! Creo que pasaste a través de los conjuntos de personajes latino1 y Big5.
delArr arr, 2 ' see section [1] in the Example call below 8 ES HEX PARA delArr arr, 2 ' see section [1] in the Example call below 9 EN delArr0
delArr1 ES HEX PARA delArr2 EN delArr3
delArr4 ES HEX PARA delArr5 EN delArr6 , que (supongo) es lo que quería almacenado.

Es suficiente una pesadilla para lidiar con Latin1 y UTF8. Pero lanzar Big5 a la mezcla hace que mi cabeza gire.

La conexión A MYSQL está dispuesta a convertir de cualquier cosa Codificación que tiene en lo que haya indicado para la tabla / columna. Pero debes declararlo correctamente.

I Piense Ha tenido delArr7 Los datos entran en, pero usted reclamó que fue 99887776638 .

 

Yikes! I think you went through both latin1 and big5 character sets.
3230A2583432A1A64E is hex for 20xc2xa2X42xc2xa1xc2xa6N in CHARACETER SET latin1
3230A2583432A1A64E is hex for 20xc2xb042xe2x80x99N in CHARACETER SET big5
3230C2B03432E280994E is hex for 20xc2xb042xe2x80x99N in CHARACETER SET utf8, which (I guess) is what you wanted stored.

It is enough of a nightmare to deal with both latin1 and utf8. But throwing big5 into the mix makes my head spin.

The connection to mysql is willing to convert from whatever encoding you have into whatever you stated for the table/column. But you must state it correctly.

I think you had big5 data coming in, but you claimed it was latin1.

 
 
       
       

Relacionados problema

2  MySQL VARCHAR CAMBIO DE LATÚS1 A UTF8  ( Mysql varchar change from latin1 to utf8 ) 
En una tabla de MySQL, estoy usando Latin1, un conjunto de caracteres para almacenar texto en un campo VarChar. Como nuestro sitio web ahora es compatible con...

0  Erlang EmysQL codificando la diferencia entre la consulta preparada y regular  ( Erlang emysql encoding difference between prepared and regular query ) 
He escrito una pregunta que obtuve una respuesta correcta aquí sobre Emysql codificación. La respuesta señala otra pregunta ... Estoy tratando de almacena...

2  Archivo XML: me gustaría personajes latinos como 'Ánid', â, Ã, ó '  ( Xml file id like to latin characteres like %c3%a1 %c3%a2 %c3%a3 %c3%b3 ) 
Estoy usando nsxmlparse para analizar mi archivo.xml. Funciona, pero cuando extrao el texto interior este archivo.xml, algunas palabras se cortan y supongo qu...

1  No puede convertir los personajes árabes codificados en latín1 a UTF8  ( Not able to convert arabic characters encoded in latin1 to utf8 ) 
Tengo una tabla MySQL con cadenas árabes. Pero el conjunto de caracteres de la tabla es latin1 . Quiero convertir lo mismo a utf8 para que la tabla se pued...

2  No se puede obtener el valor correcto para consultar el valor chino del campo Latin1 usando JDBC para MySQL  ( Cant get correct value to query chinese value from latin1 field using jdbc for ) 
No puede obtener el valor correcto para consultar el valor chino de Latin1 Field (VarChar o Char) usando JDBC para MySQL. El personaje no puede ser cambiado. ...

6  Convierta QString en QByTearray con la codificación UTF-8 o Latin1  ( Convert qstring into qbytearray with either utf 8 or latin1 encoding ) 
Me gustaría encaparar un QString en un UTF8 o un Latin1 QByTearray, Pero hoy lo consigo todo como UTF8. y estoy probando esto con algunos caracteres en el s...

1  Fijación del programa anterior: codificación de texto de base de datos y tipos de campo incorrectos  ( Fixing older program database text encoding and incorrect field types ) 
Actualmente estoy de nuevo trabajando en un programa desde cuando estaba, Umm ... menos capaz. Tiene una serie de problemas: La recopilación de la base de ...

2  Ruby 1.9.2 y rieles 3.0 UTF-8 locura [duplicado]  ( Ruby 1 9 2 and rails 3 0 utf 8 madness ) 
Esta pregunta ya tiene respuestas aquí : ¿Por qué los rieles 3 piensan que xe2x80x89 significa  x80...

4  Usa los caracteres latinos en AppEngine  ( Use latin characters in appengine ) 
¿Cómo pueden almacenar caracteres latinos en AppEngine? (por ejemplo, "" Peña ") Cuando quiero almacenar esto, recibo este error: UnicodeDecodeError: 'asci...

4  Oracle: convertir entidades XML en un campo VARCHAR2 a los caracteres UTF-8  ( Oracle convert xml entities in a varchar2 field to utf 8 characters ) 
Tengo un campo en una tabla que posee entidades XML para caracteres especiales, ya que la tabla está en latín-1. P.ej. " Hallöle sloven&#269;ina " (el "Ö" est...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos