Leestekens probleem bij converteren

Hulp nodig bij je installatie of kom je ergens niet uit? Probeer phpBB3! Problemen lossen we samen met je op.
phpBB 3.0 is End of support per 1 januari 2017. Dit forum is hier enkel ter archief. Het wordt aangeraden te upgraden naar phpBB 3.2
Forumregels
phpBB 3.0 is End of support per 1 januari 2017. Dit forum is hier enkel ter archief. Het wordt aangeraden te upgraden naar phpBB 3.2
Gesloten
eland82
Berichten: 5
Lid geworden op: 10 apr 2010, 09:02

Leestekens probleem bij converteren

Bericht door eland82 » 10 apr 2010, 09:13

  • Adres van je forum: http:// op aanvraag (de test staat op een server zonder domeinnaam)
    Event. modificaties op je forum:n.v.t.
    Wanneer ontstond het probleem?bij het converteren van phpbb2 naar phpbb3
    phpBB versie: 3.0.7-PL1

    Heb je onlangs iets veranderd aan je forum?ja, verhuisd naar een nieuwe server en geconverteerd van phpbb2 naar phpbb3
    Wat is het probleem?ik wil mijn forum verhuizen naar een nieuwe server en upgraden naar phpbb3. Na het converteren van phpbb2 in phpbb3 krijg ik te maken met vreemde tekens, zoals André Hazes in plaats van André Hazes.
Ik heb inmiddels ontdekt dat het probleem te maken heeft met de karaktersets. Het phpbb2 forum heeft latin1_swedish_ci en phpbb3 gaat uit van utf-8_bin. Dat laatste is ook nodig om straks te kunnen integreren met Joomla. De database moet dus worden omgezet naar utf-8.

Verschillende oplossingen heb ik inmiddels al uitgeprobeerd, maar deze hebben het probleem nog niet opgelost. Telkens behoud ik de vreemde tekens.

Wie kan mij helpen?

Omdat ik bij het converteren al tegen meer fouten was aangelopen ben ik met een backup van mijn forum aan het testen. Het forum zelf draait dus nog rustig op de oude server, maar eind april moet ik echt verhuizen omdat mijn contract bij de huidige provider dan afloopt. Ik ben nu aan het testen om alle stappen te doorlopen. Veel heb ik al op kunnen lossen, maar ik loop nu dus hier tegenaan. Omdat ik mijn database eerst heb gekopierd (via bigdump) naar een nieuwe server en in theorie het probleem daar ook kan zitten, geef ik voor de volledigheid maar alle gegevens. Ik vermoed zelf dat het eigenlijk vooral fout gaat bij het converteren op de nieuwe server.

Mijn oude server:

Server: Localhost via UNIX socket
Serverversie: 5.0.81-community
Protocolversie: 10
MySQL Karakterset: UTF-8 Unicode (utf8)
Apache/1.3.41 (Unix) PHP/5.2.10 mod_ssl/2.8.31 OpenSSL/0.9.7a
MySQL-client versie: 5.0.81
PHP uitbreiding: mysqli
phpMyAdmin versie informatie: 3.2.1
MySQL verbindingscollatie: utf8_generali_ci

Hierin heb ik 1 database phpBB (34) met collatie latin1_swedish_ci.
Totaal 542 Mb groot.

Mijn nieuwe server:

Server: Localhost via UNIX socket
Serverversie: 5.0.89-community
Protocolversie: 10
MySQL Karakterset: UTF-8 Unicode (utf8)
Apache/2
MySQL-client versie: 5.0.89
PHP uitbreiding: mysqli
phpMyAdmin versie informatie: 3.2.4
MySQL verbindingscollatie: utf8_generali_ci

Hierin heb ik 2 databases:

phpbb2 (30) met collatie latin1_swedish_ci, via bigdump geimporteerd van mijn oude server (alleen de search-tabellen heb ik niet meegenomen), lijkt allemaal prima te werken.

phpbb3 (62) met collatie utf8_bin, dit is de database die door phpbb automatisch is geconverteerd bij de installatie van phpbb3.

Geprobeerde oplossing

Ik heb onder andere de stappen uit dit topic gevolgd:
http://www.phpbb.com/community/viewtopi ... 5&start=30

Maar dat leverde niet het gewenste resultaat. Sowieso begrijp ik niet zo goed wat ze bij stap 5 doen, want de nieuwe database die voor phpbb3 is aangemaakt is al standaard in utf8 en utf8_bin. Waar gaat dit fout?

Ik hoop dat iemand mij verder kan helpen, want op dit moment kom ik er zelf niet meer verder mee.

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20297
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Re: Leestekens probleem bij converteren

Bericht door Paul » 10 apr 2010, 10:12

Nee, het probleem is dat je de verkeerde encoding waarschijnlijk bij het maken van de backup op de oude server hebt gekozen, waardoor die niet goed herkent werd op de nieuwe server. Het zit nog voor de conversatie.

Wat je moet doen is je database op de oude server opnieuw backuppen, dan importen op de nieuwe server, in je phpBB2 controleren of hij correct is, en dan opnieuw converteren.

eland82
Berichten: 5
Lid geworden op: 10 apr 2010, 09:02

Re: Leestekens probleem bij converteren

Bericht door eland82 » 10 apr 2010, 20:27

paul schreef:Wat je moet doen is je database op de oude server opnieuw backuppen, dan importen op de nieuwe server, in je phpBB2 controleren of hij correct is, en dan opnieuw converteren.
Wat moet ik dan anders doen dan zoals ik het nu heb gedaan?

Ik heb nu via phpmyadmin een export gemaakt op de oude server. Op het tabblad exporteren in phpmyadmin zie ik geen andere instelmogelijkheden voor karaktersets. Een backup op de oude server vanuit het beheerderspaneel is niet mogelijk, omdat ik search-velden eruit moet halen omdat hij daar op vastloopt bij een bidgump op de nieuwe server. Een export vanuit phpmyadmin zonder die velden loopt verder wel goed.

Op de nieuwe server kan ik in phpBB2 niet checken of hij goed is. Als ik inlog gaat hij namelijk direct terug naar de oude server waar het forum nog draait. Blijkbaar zit er bij het inloggen direct een verwijzing dat hij daar meteen naar terug gaat. Kan ik dat ergens instellen, zodat hij op mijn nieuwe server blijft en ik het kan checken? Dan weet ik in elk geval of het bij het overzetten naar de nieuwe server of dat het bij het converteren fout gaat.

Bedankt voor deze eerste reactie trouwens. Ik hoop het hier echt op te kunnen lossen, want op dit moment word ik er een beetje wanhopig van.

Gebruikersavatar
EelkeB
Berichten: 865
Lid geworden op: 13 mar 2009, 12:35
Locatie: Bussum

Re: Leestekens probleem bij converteren

Bericht door EelkeB » 12 apr 2010, 11:35

Encoding-problemen zijn altijd lastig. Om te beginnen, staar je niet blind op alleen de encoding van de database zelf (de collation), maar let ook op de encoding van de backup, en dat bij het inlezen van de backup je ook goed aangeeft wat de encoding van die backup is.

Misschien is het handig om een klein beetje achtergrond-informatie te hebben. Wat het probleem is, is dat UTF-8 voor bijzondere tekens twee bytes gebruikt, terwijl de meeste "oude" encodings een enkele byte gebruikt voor alle tekens (voor "gewone" tekens, zoals hoofd- en kleine letters zonder accenten, cijfers, punten, komma's, etc., gebruiken zowel UTF-8 als de "oude" encodings een enkele byte, en bovendien dezelfde bytecode, waardoor het probleem alleen tot uiting komt in speciale tekens).

Wat gebeurt er als je bijvoorbeeld à ziet in plaats van het juiste accent-teken? De beide bytes van UTF-8 worden weergegeven als de tekens waar ze voor staan in de "oude" encoding. Nu lijkt het bij jou of je dit probleem "dubbel" hebt, want je geeft aan dat je André ziet waar je André had verwacht; de ene é wordt weergegeven als 4 karakters. Dat suggereert dat het ook twee keer mis is gegaan, ergens. Hoe het gebeurt kan zijn is bijvoorbeeld als volgt:
  • Je hebt een backup gemaakt in UTF-8
  • Je hebt bij het importeren aangegeven dat de backup een "oude" enkel-bytes encoding heeft. Het backup-bestand wordt nu geinterpreteerd als die enkel-bytes encoding. -->1 keer het encodingsprobleem
  • De database is zelf UTF-8 encoding, dus bij het importeren van de backup worden de zogenaamd enkelbytes tekens omgezet in hun dubbel-bytes representatie. Het oorspronkelijk enkele karakter is nu al 4 bytes.
Als je nu de interne representatie in de database weergeeft als een enkel-bytes encoding, wordt je oorspronkelijk enkele karakter als vier karakters weergegeven.

Wat je eraan kunt doen is alleen maar heel erg goed opletten bij het encodingsformaat van je export/import bestand. Vermoedelijk is je exportbestand al UTF-8. Let dus bij het importeren op dat je ook aangeeft dat het importbestand in UTF-8 is. Zet deze import-optie beslist niet op de encoding van de database zelf.
Dutch Open Projects
Mini Seven Club Nederland - Het grote forum voor het kleine autootje
Geen support via PM of mail

eland82
Berichten: 5
Lid geworden op: 10 apr 2010, 09:02

Re: Leestekens probleem bij converteren

Bericht door eland82 » 12 apr 2010, 21:25

Dank je wel voor je uitgebreide reactie. Ik ben echt een dummie op het gebied van databases, maar ik denk dat ik je kan volgen. Ik heb toch nog twee vragen.

1. Welke instellingen aanpassen?
Ik weet nog steeds niet precies waar ik nu iets kan aanpassen. Zoals gezegd heb ik met phpmyadmin een .sql bestand geexporteerd. In phpmyadmin zie ik op het tabblad exporteren geen andere instelmogelijkheden met betrekking tot karaktersets etc. Via bigdump heb ik het .sql bestand op de nieuwe server in een database geladen. Ook in bigdump zou ik niet weten wat ik anders in moet stellen. Vervolgens heb ik phpbb2 geinstalleerd op de nieuwe server en de database gekoppeld. Kortom: welke instellingen moet ik precies aanpassen om een goede database op de nieuwe server te krijgen?

2. Hoe voorkom ik dat de kopie database terugverwijst naar de oude server?
Als ik het goed begrijp zou dit probleem zich dus al voor moeten doen bij het phpbb2 forum op de nieuwe server. Dat zou ik kunnen checken, maar helaas lukt het me niet om daar in te loggen, omdat ik na het inloggen op phpbb2 onmiddelijk wordt geredirect naar het nog draaiende forum op de oude server. Hoe kan ik dat voorkomen? Dan kan ik in elk geval checken of de overdracht naar de nieuwe server goed is gegaan, of dat het probleem toch in het tweede deel zit (bij het converteren van phpbb2 naar phpbb3).

eland82
Berichten: 5
Lid geworden op: 10 apr 2010, 09:02

Re: Leestekens probleem bij converteren

Bericht door eland82 » 12 apr 2010, 22:31

Door uit te proberen en te zoeken ben ik vanavond zelf alweer een stap verder gekomen. Door via phpmyadmin in de database te zoeken ben ik erachter gekomen dat het inderdaad in de gekopierde database op de nieuwe server al fout zit.

Vervolgens heb ik ook in bigdump.php een instelling kunnen vinden.

Code: Selecteer alles

// Connection character set should be the same as the dump file character set (utf8, latin1, cp1251, koi8r etc.) 
// See http://dev.mysql.com/doc/refman/5.0/en/charset-charsets.html for the full list 

$db_connection_charset = ''; 
Door bigdump opnieuw te draaien en hier utf8 in te vullen heb ik nu in de gekopierde database niet vier tekens maar twee vreemde tekens over. Het probleem is dus nog niet helemaal opgelost. Nog één stap te gaan. Maar waar vind ik die laatste instelling? :?

In elk geval nogmaals bedankt voor de tips hierboven. Die hebben me echt alweer op weg geholpen. Ik ben echt heel erg blij met jullie hulp. Hopenlijk lukt het ook om de laatste fout op te sporen, zodat we straks eindelijk een werkend phpbb3-forum hebben.

Gebruikersavatar
EelkeB
Berichten: 865
Lid geworden op: 13 mar 2009, 12:35
Locatie: Bussum

Re: Leestekens probleem bij converteren

Bericht door EelkeB » 13 apr 2010, 09:37

Voor wat betreft het phpBB2 probleem zou ik even heel erg hard moeten graven, maar volgens mij moet je de script-locatie aanpassen in het configuratie-bestand (phpBB3 bepaald dit in principe automatisch, maar phpBB2 moest je vertellen waar hij precies draait).

Met bigdump ben ik niet zo heel erg bekend, maar heb je niet ook de mogelijkheid om de karakterset/encoding van het dump-bestand ergens in te vullen? Als je in de phpMyAdmin waar je de dump gemaakt hebt geen keuze hebt in de encoding, dan gebruikt hij waarschijnlijk UTF-8. Als dat bestand vervolgens wordt ingelezen als zijnde een enkel-bytes encoding, via een UTF-8 DB-connectie, dan kun je inderdaad nog met een enkelvoudige encodingsfout zitten.
Dutch Open Projects
Mini Seven Club Nederland - Het grote forum voor het kleine autootje
Geen support via PM of mail

Gesloten