Chinese tekst

Status
Niet open voor verdere reacties.

Bas80

Gebruiker
Lid geworden
7 feb 2008
Berichten
28
Ik heb een probleem waar ik al ruim een dag mee aan het vechten ben en ik hoop dat jullie me kunnen helpen.

Het bedrijf waar ik werk heeft besloten ook in China te gaan verkopen en dat houdt in dat ook onze software vertaald moet gaan worden. Op zich ben ik al een heel eind, maar er gaat nog iets mis waar ik niet achter kan komen.

Wat ik moet doen is Chinese tekst uit een database halen (in mijn testomgeving is dat voorlopig MySQL 5, maar dat wordt later Oracle) en in de software laten zien. Ik ben nu op het punt dat een even aantal Chinese tekens op de juiste wijze getoond worden en bij een oneven aantal tekens is het laatste teken verdwenen.

Volgens mij komt dit door een functie die ik gebruik, namelijk StrConv. Met deze functie wil ik de string die ik ontvangen heb van MySQL omzetten naar een byte array en die vervolgens met een andere functie omzetten naar een juiste utf-8 string.

Een Chinees teken in MySQL bestaat namelijk uit 3 bytes. Wanneer ik twee Chinese tekens heb (voor het gemak twee dezelfde tekens), zijn dat 6 bytes. Als ik die string van 6 bytes in StrConv gooi, krijg ik een byte array bestaande uit 6 items die exact dezelfde waarde hebben als dat ik in MySQL Query Browser zie, bijvoorbeeld (228, 184, 173, 228, 184, 173). Wanneer ik maar 1 Chinees teken heb, dan heb ik dus 3 bytes, bijvoorbeeld (228, 184, 173). Ik krijg echter iets anders terug van StrConv, namelijk (228, 184, 0). Het lijkt erop alsof StrConv niet ziet dat er nog laatste byte is (VB rekent immers met 2 bytes per karakter).

Herkent iemand dit probleem en veel belangrijker nog, weet iemand een oplossing voor dit probleem? Als jullie meer info willen, dan hoor ik het graag.

Alvast bedankt.


De manier waarom ik StrConv aanroep:

Dim ByteArray() As Byte
ByteArray = StrConv(StringReceivedFromMySQL, vbFromUnicode)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan