Hi, leecher af, maar gelijk wel met een aardig probleempje:
Ik ben bezig een visual basic 6.0 programma te verbouwen.
Dit programma pakt unicode teksten uit een mysql-tabel. In de kolommen staan vertalingen van deze tekst in meerdere talen.
Jullie raden het al, dit ging allemaal harstikke leuk aangezien de meeste teksten in Latin-1-characters zijn. Maar nu mag ik dit programma aanpassen zodat ook teksten in het Central Europoean, Grieks, Arabisch enzovoorts kunnen worden verwerkt. Nu liep ik in eerste instantie tegen het probleem aan, dat wanneer een tekst via een query binnenkomt, zoals in onderstaande code:
QText iets verkeerds krijgt. Als ik hier een watch op zet dan zie ik dat er bijvoorbeeld de waarde:
"Nyn? m?m n?kolik ot?zek k motiv?m Va?ich aktivit, k Va?? spokojenosti s nimi a k tomu, co o?ek?v?te od budoucnosti." aan wordt toegekend. terwijl dit eigenlijk de Tschechische tekst: "Nyní mám několik otázek k motivům Vašich aktivit, k Vaší spokojenosti s nimi a k tomu, co očekáváte od budoucnosti." behoort te zijn.
Op het eerste gezicht lijkt het er wel op dat de text goed binnenkomt, maar dat de VB-editor er niet zoveel mee kan. Dit is het echter niet, als ik de bitwaarde van de karakters die als vraagteken worden getoond bekijk dan zijn het ook echt vraagtekens.
Na enig gegoogle, bedenk ik me dat wellicht de data, wellicht al Latin-vervormd als respons op de query bij het VB-programmaatje binnenkomt. Om te forceren dat er echt utf-8 encoded text binnenkomt voeg ik volgende code toe:
Dit heeft niet het gewenste maar wel 'n effect. De eerder genoemde zin komt dan binnen als:
""Nynà mám několik otázek k motivům Vašich aktivit, k Vašà spokojenosti s nimi a k tomu, co očekáváte od budoucnosti."
Al die captal A's komen bekend voor van het bekijken van een webpagina in Western Eurpopean die Unicode was.
Deze keer is het weer niet de VB-editor, want als ik de byte-waarde van de characters bekijk, dan blijkt dat de QText-string al de letter voor letter bovenstaande vertaaltekst heeft overgenomen.
In het kort: ik zit nu vast. Moet ik nog gaan sleutelen aan de query/instellingen, database? Is het probleem gewoon het hopeloos ouderwetse VB6? Vast wel, maar ik zal er toch iets voor moeten verzinnen. Hoe haal ik op een goede manier deze utf-8 encoded tekst binnen?
Ik ben bezig een visual basic 6.0 programma te verbouwen.
Dit programma pakt unicode teksten uit een mysql-tabel. In de kolommen staan vertalingen van deze tekst in meerdere talen.
Jullie raden het al, dit ging allemaal harstikke leuk aangezien de meeste teksten in Latin-1-characters zijn. Maar nu mag ik dit programma aanpassen zodat ook teksten in het Central Europoean, Grieks, Arabisch enzovoorts kunnen worden verwerkt. Nu liep ik in eerste instantie tegen het probleem aan, dat wanneer een tekst via een query binnenkomt, zoals in onderstaande code:
Visual Basic:
1
2
3
4
| query = "Select * from qtext where version='3' order by section" rs.Open query, Database_Connection, adOpenDynamic, adLockPessimistic while Not rs.EOF QText = rs.Fields(aIndex).Value |
QText iets verkeerds krijgt. Als ik hier een watch op zet dan zie ik dat er bijvoorbeeld de waarde:
"Nyn? m?m n?kolik ot?zek k motiv?m Va?ich aktivit, k Va?? spokojenosti s nimi a k tomu, co o?ek?v?te od budoucnosti." aan wordt toegekend. terwijl dit eigenlijk de Tschechische tekst: "Nyní mám několik otázek k motivům Vašich aktivit, k Vaší spokojenosti s nimi a k tomu, co očekáváte od budoucnosti." behoort te zijn.
Op het eerste gezicht lijkt het er wel op dat de text goed binnenkomt, maar dat de VB-editor er niet zoveel mee kan. Dit is het echter niet, als ik de bitwaarde van de karakters die als vraagteken worden getoond bekijk dan zijn het ook echt vraagtekens.
Na enig gegoogle, bedenk ik me dat wellicht de data, wellicht al Latin-vervormd als respons op de query bij het VB-programmaatje binnenkomt. Om te forceren dat er echt utf-8 encoded text binnenkomt voeg ik volgende code toe:
Visual Basic:
1
2
3
| query = "set names utf8" rs.Open query, Database_Connection, adOpenDynamic, adLockPessimistic |
Dit heeft niet het gewenste maar wel 'n effect. De eerder genoemde zin komt dan binnen als:
""Nynà mám několik otázek k motivům Vašich aktivit, k Vašà spokojenosti s nimi a k tomu, co očekáváte od budoucnosti."
Al die captal A's komen bekend voor van het bekijken van een webpagina in Western Eurpopean die Unicode was.
Deze keer is het weer niet de VB-editor, want als ik de byte-waarde van de characters bekijk, dan blijkt dat de QText-string al de letter voor letter bovenstaande vertaaltekst heeft overgenomen.
In het kort: ik zit nu vast. Moet ik nog gaan sleutelen aan de query/instellingen, database? Is het probleem gewoon het hopeloos ouderwetse VB6? Vast wel, maar ik zal er toch iets voor moeten verzinnen. Hoe haal ik op een goede manier deze utf-8 encoded tekst binnen?