update/replace vreemde codes met regexp

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mar kla

mar kla

12/07/2024 14:56:17
Quote Anchor link
Bij een conversie van poging van latin1_swedish_ci naar utf8_general_ci, ben ik er achter gekomen dat er in een kolom "vreemde" tekens stonden.

Die heb ik er(bijna allemaal uit) door middel van :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
UPDATE newsitems SET NewsItem_Intro = REPLACE(NewsItem_Intro, '' '');


Maar één ding lukt me niet in de tabel zit de "code": \\xEBl

Een :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT * FROM `newsitems` WHERE `NewsItem_Intro` REGEXP '\\xEBl'


geeft aan dat het om 222 records gaat.

Als ik via het CMS/MyphpAdmin/ of in een CSV export kijk zie ik, behalve de tekst die er hoort te staan, niks vreemds in het record staan.


Hoe kan ik de \\xEBl eruit krijgen of desnoods eerst (ter controle) vervangen door bijvoorbeeld: @#$
 
PHP hulp

PHP hulp

08/09/2024 01:36:44
 
- Ariën  -
Beheerder

- Ariën -

12/07/2024 15:47:39
Quote Anchor link
Als je vreemde tekens ziet, dan komt dat door je encoding. Blijkbaar sta je die nu met holbewonertactieken stuk voor stuk recht te breien in plaats van dat je netjes de boel laat converteren.
 
Mar kla

mar kla

12/07/2024 15:50:52
Quote Anchor link
Ja het komt door de enconding!!

Maar tijdens het converteren stop PhpmyAdmin omdat deze codes niet te converteren is!!


Zegt deze holbewoner tegen de andere holbewoner!
 
- Ariën  -
Beheerder

- Ariën -

12/07/2024 16:20:11
Quote Anchor link
Hoe converteer je dat dan? Converteren is wat anders dan een crapload aan replacements uitvoeren. Misschien is het nu niet meer goed te converteren omdat je teveel hebt zitten te rommelen. Dus ik hoop dat je een back-up hebt.

Misschien is dit een handig artikel:
http://fangorn.thijma.nl/news/latin1-vs-utf8

Maar mogelijk kan je hier ook wat mee doen:
https://docs.cloudbees.com/docs/cloudbees-cd-kb/latest/cloudbees-cd-kb/kbec-00385-converting-a-mysql-database-from-latin-1-to-utf-8-before-upgrading-to-electricflow-8-0-1

Het is wel van belang dat je weet wat de waardes van de settings: character-set-server en collation-server zijn. Deze kan je in phpMyAdmin vinden, zodra je inlogt.
Gewijzigd op 12/07/2024 16:24:23 door - Ariën -
 
Mar kla

mar kla

12/07/2024 17:09:29
Quote Anchor link
Wat ik doe is heel basic in Phpmyadmin de kolom bewerken door de bewuste kolom van via bewerken "Collatie" van latin1_swedish_ci naar utf8_general_c om te zetten.

PHPmyadmin gaat aan de slag, maar komt dan met de fout <code> "fout in query #1366- incorrect string value: \\xEB|rij...'for column....ad row2.</code>

Die links ga ik straks even lezen alvast bedankt!
\
 
Ivo P

Ivo P

12/07/2024 19:08:37
Quote Anchor link
Als je een kolom hebt met het naam "duits" en daarin staan teksten in het Duits
en je verandert de naam in Frans.

dan worden de teksten niet vertaald.
Evenzo met de collatie. (die trouwens meer zegt over de bijkomende zaken als sorteren, en je zou eigenlijk de character set van de kolom willen aanpassen).

Waarschijnlijk is je foutmelding een gevolg van "de kolom bevat nu waarden die niet te verwerken zijn met de nieuwe collatie"/

Vergelijk met het hernoemen van de kolom van Duits naar Frans.
Je hebt nu ineens tekens als ö en ß in je tekst die in het Frans niet voorkomen.

Betere werkwijze:

nieuwe kolom met de gewenste settings aanmaken en de inhoud van de oude geconverteerd naar deze nieuwe kolom brengen.
 
- Ariën  -
Beheerder

- Ariën -

12/07/2024 19:11:23
Quote Anchor link
Ik heb nog wel een scriptje staan om de boel te converteren.
Eens kijken of ik dat op GitHub kan zetten.

Edit:
Ik geloof dat ik deze heb gebruikt:
https://gist.github.com/hollodotme/fe24b961680e08473072
of deze:
https://gist.github.com/pobegov/f8b293fb6eb658a13feb1c318e6c07ed

Let op: Maak backups!
Gewijzigd op 12/07/2024 19:19:03 door - Ariën -
 
Mar kla

mar kla

12/07/2024 19:22:15
Quote Anchor link
Als ik een kolom verander van latin1_swedish_ci naar utf8_general_c dan wordt deze automatiche vertaald.

Het gaat niet om ö of ñ of welke letter dan ook. Zoals ik in eerste instantie als schreef, Er zitten ONZICHTBARE!!! gegevens in die tabel. Daarom krijg ik een error.

De tabel heb ik al als CSV geëxporteerd. Op geschoond wat betreft zichtbare karakters.
Daarna weer geïmporteerd.
daarna kreeg toch weer de melding : "fout in query #1366- incorrect string value: \\xEB|rij...'for column....ad row2.

Als ik <code> SELECT * FROM `newsitems` WHERE `NewsItem_Intro` REGEXP '\\xEBl' </code> doe dan krijg ik als resultaat 222 records. In die records is niet te zien qua karakters wat daar niet hoort.

ik hoopte op een combinatie script dat de code wel kan vinden en die kan replacen met een leeg waarde
zoiets dus:
<code> UPDATE newsitems SET NewsItem_Intro = REPLACE(NewsItem_Intro, 'REGEXP '\\xEBl'' ''); </code>
 
- Ariën  -
Beheerder

- Ariën -

12/07/2024 19:24:38
Quote Anchor link
Check mijn gedeelde script eens, en lees ook eens wat Ivo zegt.

Backup terug, en probeer dat script.
Gewijzigd op 12/07/2024 19:37:15 door - Ariën -
 
Ad Fundum

Ad Fundum

14/07/2024 22:06:43
Quote Anchor link
Het converteren van de ene naar de ander encoding heet transcoding, en latin1 past helemaal in UTF8, dus dat kan het probleem niet zijn.
Het is gewoon vreemd dat er vreemde tekens in staan waar MySQL (ik neem aan dat je dat gebruikt?) geen raad weet. Misschien een bug, wie zal het zeggen.

Dat zou je met een query moeten kunnen verhelpen. Het enige is dat je dat op zo'n manier moet zien te communiceren naar MySQL dat-ie het snapt. Misschien dat dit helpt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
UPDATE newsitems SET NewsItem_Intro = REPLACE(NewsItem_Intro, UNHEX('EB', '')); </code>

Ik heb het voorbeeld hier vandaan gehaald. (Zelf ben ik meer van PostgreSQL)
Gewijzigd op 14/07/2024 22:08:09 door Ad Fundum
 
- Ariën  -
Beheerder

- Ariën -

14/07/2024 22:32:36
Quote Anchor link
Zelf ben ik geen fan van phpMyAdmin. Vroeger was het een drama, en ik weet niet of dat nog steeds zo is. Bij het exporteren was het altijd hoop houden dat de export goed ging. Maar tegenwoordig gebruik ik voornamelijk HeidiSQL, en als ik op de server onderhoud moet plegen, dan doe ik dat met mysql op de server. Dan heb je bovendien geen lompe limieten...
 
Ad Fundum

Ad Fundum

15/07/2024 06:58:29
Quote Anchor link
phpMyAdmin gaat redelijk, zo heel af en toe moet ik het gebruiken omdat ik de MantisBT database niet omgezet krijg van MySQL naar PostgreSQL, en handmatig duizenden tickets overzetten ga ik echt niet doen.

HeidiSQL is een makkelijke lichtgewicht en tool die je ook als portable kan installeren.
De enige drie minpunten die ik kan verzinnen is dat het telkens wil updaten, alleen op Windows draait, en dat de ondersteuning voor PostgreSQL features minder is dan bij pgAdmin.
Een aantal jaren geleden zat ik ook op Windows / MySQL en toen was HeidiSQL ook mijn favoriete tool.
Gewijzigd op 15/07/2024 06:58:40 door Ad Fundum
 
Mar kla

mar kla

15/07/2024 09:12:57
Quote Anchor link
Het is me gelukt. dank voor de hulp en tips
 
Ivo P

Ivo P

15/07/2024 10:10:13
Quote Anchor link
volgens

https://www.fileformat.info/info/unicode/char/eb/index.htm

is #eb gewoon een ë (e met trema)
 
Jan Koehoorn

Jan Koehoorn

20/07/2024 18:01:15
Quote Anchor link
- Ariën - op 14/07/2024 22:32:36:
Maar tegenwoordig gebruik ik voornamelijk HeidiSQL, en als ik op de server onderhoud moet plegen, dan doe ik dat met mysql op de server.


Voor Mac gebruikers: ik heb goeie ervaringen met Sequel Ace. Gratis te downloaden via de App Store.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.