Casussen (tekencodering)

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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