Casussen (tekencodering): verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
(Nieuwe pagina aangemaakt met '== Casus: Incorrect string value: \xE2\x80\xAF (aug. 2019) == Foutmelding bij import in MySQL: <pre> 6 warning(s): 1366 Incorrect string value: '\xE2\x80\xAF: 2....')
 
 
(13 tussenliggende versies door dezelfde gebruiker niet weergegeven)
Regel 1: Regel 1:
== Casus: Incorrect string value: \xE2\x80\xAF (aug. 2019) ==
+
== Incorrect string value: \xE2\x80\xAF (aug. 2019) ==
  
 
Foutmelding bij import in MySQL:
 
Foutmelding bij import in MySQL:
Regel 16: Regel 16:
  
 
UTF-8-code <code>e2 80 af</code> staat voor ''NARROW NO-BREAK SPACE'' [https://www.utf8-chartable.de/unicode-utf8-table.pl?start=8192&number=128]. Ik vermoed dat MySQL daar niet mee overweg kan. Sois.
 
UTF-8-code <code>e2 80 af</code> staat voor ''NARROW NO-BREAK SPACE'' [https://www.utf8-chartable.de/unicode-utf8-table.pl?start=8192&number=128]. Ik vermoed dat MySQL daar niet mee overweg kan. Sois.
 +
 +
== Line-ending 0d 0a (aug. 2019) ==
 +
 +
MySQL raakte in de war tijdens de import van een Amazon-exportbestand: Er stonden newlines of carriage returns in de geïmporteerde data.
 +
 +
Bronbestand - eerste regels:
 +
 +
<pre>
 +
00000000: efbb bf73 6b75 0961 7369 6e0d 0a30 3130  ...sku.asin..010
 +
00000010: 3009 4230 3048 5945 5549 584f 0d0a 3031  0.B00HYEUIXO..01
 +
</pre>
 +
 +
* Regels worden beëindigd met <code>0d 0a</code>. Dat is de gewone Windows-manier om regels te eindigen
 +
* <code>0d</code> - Carriage return - <code>\r</code>
 +
* <code>0a</code> - Newline - <code>\n</code>
 +
* Om een of andere reden verslikt MySQL zich daarin bij importeren
 +
* Het is een UTF-8-bestand. Zou de combinatie Windows-line-endings en UTF-8 MySQL in de war brengen?
 +
 +
Oplossing:
 +
 +
<pre>
 +
load data local infile '/tmp/asin-sku-fr.csv'
 +
into table 201908_asin_sku_codes_amz_fr_imp
 +
character set utf8
 +
fields terminated by '\t'
 +
optionally enclosed by '"'
 +
lines terminated by '\r\n'  # ← ZO SIMPEL - ALS JE HET WEET
 +
ignore 1 rows;
 +
</pre>
 +
 +
== Bronnen ==
 +
 +
* https://stackoverflow.com/questions/6998506/text-file-with-0d-0d-0a-line-breaks
 +
* https://stackoverflow.com/questions/33208518/difference-between-0x0a-and-0x0d/33208588

Huidige versie van 1 dec 2019 om 06:40

Incorrect string value: \xE2\x80\xAF (aug. 2019)

Foutmelding bij import in MySQL:

6 warning(s): 
1366 Incorrect string value: '\xE2\x80\xAF: 2...' for column 'title' at row 132 
1366 Incorrect string value: '\xE2\x80\xAF: 4...' for column 'title' at row 160 
1366 Incorrect string value: '\xE2\x80\xAF: 1...' for column 'title' at row 278 
1366 Incorrect string value: '\xE2\x80\xAF: 1...' for column 'title' at row 341 
1366 Incorrect string value: '\xE2\x80\xAF: 2...' for column 'title' at row 352 
1366 Incorrect string value: '\xE2\x80\xAF: 2...' for column 'title' at row 363

Ik weet zeker dat het bronbestand (Amazon-raport) UTF-8-gecodeerd is, en dat de data ook als zodanig geïmporteerd wordt.

UTF-8-code e2 80 af staat voor NARROW NO-BREAK SPACE [1]. Ik vermoed dat MySQL daar niet mee overweg kan. Sois.

Line-ending 0d 0a (aug. 2019)

MySQL raakte in de war tijdens de import van een Amazon-exportbestand: Er stonden newlines of carriage returns in de geïmporteerde data.

Bronbestand - eerste regels:

00000000: efbb bf73 6b75 0961 7369 6e0d 0a30 3130  ...sku.asin..010
00000010: 3009 4230 3048 5945 5549 584f 0d0a 3031  0.B00HYEUIXO..01
  • Regels worden beëindigd met 0d 0a. Dat is de gewone Windows-manier om regels te eindigen
  • 0d - Carriage return - \r
  • 0a - Newline - \n
  • Om een of andere reden verslikt MySQL zich daarin bij importeren
  • Het is een UTF-8-bestand. Zou de combinatie Windows-line-endings en UTF-8 MySQL in de war brengen?

Oplossing:

load data local infile '/tmp/asin-sku-fr.csv'
	into table 201908_asin_sku_codes_amz_fr_imp
	character set utf8
	fields terminated by '\t'
	optionally enclosed by '"'
	lines terminated by '\r\n'   # ← ZO SIMPEL - ALS JE HET WEET
	ignore 1 rows;

Bronnen