Het volgende is het geval. Middels IBM MQ-Series wordt een vb-string gevuld met een XML-file. Dat gaat uitermate prima, totdat er een turkse naam in de XML stond. Die werd aardig vervormd door VB/MSXML
De volgende naam hield het niet uit:
Dit wordt binnen vb:
Wat ik allemaal heb geprobeerd:
Ik heb geprobeerd om de string als Unicode, UTF-8, UTF-16, etc, etc te hercoderen, dat strandde allemaal op niets. De enige oplossing die ik heb kunnen vinden is het eerst wegschrijven van de xml in een tijdelijk bestand, om die daarna te openen met msxml, dat is dus in plaats van direct de var in msXML wegschrijven.
Het wegschrijven via een tijdelijk bestand is hier echter geen optie, vanwege de load die dit teweeg gaat brengen, buiten dat het sowieso al een lelijke oplossing is.
Ik heb een stukje code geschreven die het probleem reproduceert, hier zit ook de optie in verwerkt die via een tijdelijk bestand wel de gewenste output levert:
De output van dit progsel is:
Feitelijk is mijn vraag dus: hoe kan ik MSXML 'HöçeL' in het XML laten zetten, zonder dat ik van tijdelijke bestanden gebruik moet maken.
De volgende naam hield het niet uit:
code:
1
| HöçeL |
Dit wordt binnen vb:
code:
1
| HöçeL |
Wat ik allemaal heb geprobeerd:
Ik heb geprobeerd om de string als Unicode, UTF-8, UTF-16, etc, etc te hercoderen, dat strandde allemaal op niets. De enige oplossing die ik heb kunnen vinden is het eerst wegschrijven van de xml in een tijdelijk bestand, om die daarna te openen met msxml, dat is dus in plaats van direct de var in msXML wegschrijven.
Het wegschrijven via een tijdelijk bestand is hier echter geen optie, vanwege de load die dit teweeg gaat brengen, buiten dat het sowieso al een lelijke oplossing is.
Ik heb een stukje code geschreven die het probleem reproduceert, hier zit ook de optie in verwerkt die via een tijdelijk bestand wel de gewenste output levert:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| Dim a As String Dim oFS As New FileSystemObject Dim oTS As TextStream Dim oDD As New DOMDocument a = "<?xml version=""1.0"" encoding=""UTF-8""?>" & vbCrLf a = a & "<testding>HöçeL</testding>" oDD.loadXML (a) oDD.Validate Debug.Print "ZONDER FILE TRANSFER:" Debug.Print "=========================" Debug.Print oDD.xml Set oDD = Nothing Set oTS = oFS.CreateTextFile(App.Path & "\test.txt", True, False) oTS.WriteLine a oTS.Close Set oDD = New DOMDocument oDD.Load (App.Path & "\test.txt") oDD.Validate Debug.Print "MET FILE TRANSFER:" Debug.Print "=========================" Debug.Print oDD.xml Set oDD = Nothing |
De output van dit progsel is:
code:
1
2
3
4
5
6
7
8
9
| ZONDER FILE TRANSFER: ========================= <?xml version="1.0"?> <testding>HöçeL</testding> MET FILE TRANSFER: ========================= <?xml version="1.0"?> <testding>HöçeL</testding> |
Feitelijk is mijn vraag dus: hoe kan ik MSXML 'HöçeL' in het XML laten zetten, zonder dat ik van tijdelijke bestanden gebruik moet maken.
[ Voor 16% gewijzigd door sopsop op 25-01-2006 14:48 ]