Toon posts:

[SQL] Speciale karacters verkeerd weergegeven

Pagina: 1
Acties:
  • 584 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb een probleempje met MS SQL server in combinatie met andere software.

Kleine uitleg:
Ik heb een tabel staan met allerlei adresgegevens, hierin zitten ook namen met speciale karakters (eactue, egrave, enz.)
Deze gegevens importeer ik dan weer in een word template.

Het probleem is dat de speciale karaters verkeerd worden overgenomen. Als ik in de SQL manager kijk dan staat de naam goed, via de export worden de speciale karakters vervangen door meerdere andere rare tekens.

Ik heb het vermoeden dat het in de codepage (karakterset) zit, maar hoe kan ik dat meegeven?

Ik maak gebruik van MSSQL, ColdFusion (voor het maken van het WDDX/XML pakket), en VB voor de import in Word.

De codepage van SQL is: SQL_Latin1_General_CP1_CI_AS
Het liefst wil ik de oplossing in de SQL query of in het VB maken

Heeft iemand briljante ideeen? :)

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 27-03 16:52
Als je een groter aantal karakters voor diakrieten ziet bij export, dan heb je te maken met UTF-8. Elk latin-1 diakriet wordt dan twee octets.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Verwijderd

Topicstarter
Wat kan ik daaraan doen?

Verwijderd

Zodra ik XML lees, dan gaat er bij mij een belletje rinkelen. XML moet ook de juiste characterset meekrijgen. Ik weet uit m'n hoofd niet welke, maar da's makkelijk op te zoeken. Heb je je xml output al gechecked?

Blijkbaar klopt je SQL output wel, want die collation klopt wel (_CI_AS = Case Insensitive Accent Sensitive).

:7

Verwijderd

Topicstarter
Tja, daar zit het hem ook een beetje, omdat het een oude applicatie is en nog gebruik maakt van de ColdFusion functie <CFWDDX, welke het converteerd naar XML kan je hierbij geen extra variabelen meegeven voor de characterset.
Is er een (andere) manier om VB duidelijk te maken dat het Latin is?

Verwijderd

Topicstarter
Dat gaat ook niet werken, is namelijk alleen voor form en url variabelen. Ik denk dat ik het toch in de SQL of de CFWDDX hoek moet zoeken.
Mocht ik verder komen, dan laat ik het hier weten.

  • jochemd
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Dat gaat niet alleen over form en URL variabelen. Lees nog maar even verder overcfprocessingdirective.

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 17-11-2025

robjanssen

Software Developer

Wat voor export gebruik je?

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 27-03 16:52
Voor alle duidelijkheid: als je extra karakters ziet is het daar dus GEEN Latin-1. Latin-1 is fixed-width 1byte/karakter. UTF-8 is 1-4 bytes per karakter (1 voor ASCII, 2 voor de diakrieten uit Latin-1, 3 voor bv chinees en 4 voor bijzantijse muzieknoten).

De botste oplossing is een UTF-8 parser in VB bouwen. Lees de file als binary. Elke byte < 127? ->ASCII. Bytes > 127? -> Diakriet, tweede byte lezen en bits plakken. Zie www.unicode.org voor de details. Het is niet moeilijk, ik dacht dat het 2 bits uit de eerste byte en 6 bits uit de tweede byte waren. Dit werkt omdat Latin-1 overeenkomt met de eerste 256 unicode karakters.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Verwijderd

Topicstarter
Voor in het archief:
Het probleem zat in de CFWDDX functie van ColdFusion. Blijkbaar gebruikt de CF5 versie een iets andere methode als CFMX. Nu ik de applicatie naar een CF5 server heb verplaatst werkt alles namelijk wel gewoon.
Ik ga de Macromedia piepoltjes hier even over informeren.
Pagina: 1