Først skal du gøre dig klart at der er ikke *et* DOS karakter-sæt - der er mange.
Det mest udbredte er nok Code Page 850. Jeg har prøvet at lave noget kode til at konvertere fra Code Page 850 til ISO-8859-1 (Windows). Jeg regner med at du selv har styr på fil ind og ud. Hvis ikke så skriv, så bixer jeg noget sammen. Hvis det f.eks. er CP 865 og ikke 850 du har så skriv også - jeg har også en 865 konvertering.
Nedenstående er muligvis det værste skod kode der længe er set (jeg koder meget i C/C++/Java men ikke ret meget i VB og det her er en konvertering fra noget C kode).
Men her kommer det (der er 4 linier test funktion i bunden):
Option Compare Database
Function from_cp850(s As String) As String Dim res As String Dim v, v2 As Integer For i = 1 To Len(s) v = Asc(Mid(s, i, 1)) Select Case v Case 0 v2 = 0 Case 1 v2 = 1 Case 2 v2 = 2 Case 3 v2 = 3 Case 4 v2 = 4 Case 5 v2 = 5 Case 6 v2 = 6 Case 7 v2 = 7 Case 8 v2 = 8 Case 9 v2 = 9 Case 10 v2 = 10 Case 11 v2 = 11 Case 12 v2 = 12 Case 13 v2 = 13 Case 14 v2 = 14 Case 15 v2 = 15 Case 16 v2 = 16 Case 17 v2 = 17 Case 18 v2 = 18 Case 19 v2 = 19 Case 20 v2 = 20 Case 21 v2 = 21 Case 22 v2 = 22 Case 23 v2 = 23 Case 24 v2 = 24 Case 25 v2 = 25 Case 26 v2 = 26 Case 27 v2 = 27 Case 28 v2 = 28 Case 29 v2 = 29 Case 30 v2 = 30 Case 31 v2 = 31 Case 32 v2 = 32 Case 33 v2 = 33 Case 34 v2 = 34 Case 35 v2 = 35 Case 36 v2 = 36 Case 37 v2 = 37 Case 38 v2 = 38 Case 39 v2 = 39 Case 40 v2 = 40 Case 41 v2 = 41 Case 42 v2 = 42 Case 43 v2 = 43 Case 44 v2 = 44 Case 45 v2 = 45 Case 46 v2 = 46 Case 47 v2 = 47 Case 48 v2 = 48 Case 49 v2 = 49 Case 50 v2 = 50 Case 51 v2 = 51 Case 52 v2 = 52 Case 53 v2 = 53 Case 54 v2 = 54 Case 55 v2 = 55 Case 56 v2 = 56 Case 57 v2 = 57 Case 58 v2 = 58 Case 59 v2 = 59 Case 60 v2 = 60 Case 61 v2 = 61 Case 62 v2 = 62 Case 63 v2 = 63 Case 64 v2 = 64 Case 65 v2 = 65 Case 66 v2 = 66 Case 67 v2 = 67 Case 68 v2 = 68 Case 69 v2 = 69 Case 70 v2 = 70 Case 71 v2 = 71 Case 72 v2 = 72 Case 73 v2 = 73 Case 74 v2 = 74 Case 75 v2 = 75 Case 76 v2 = 76 Case 77 v2 = 77 Case 78 v2 = 78 Case 79 v2 = 79 Case 80 v2 = 80 Case 81 v2 = 81 Case 82 v2 = 82 Case 83 v2 = 83 Case 84 v2 = 84 Case 85 v2 = 85 Case 86 v2 = 86 Case 87 v2 = 87 Case 88 v2 = 88 Case 89 v2 = 89 Case 90 v2 = 90 Case 91 v2 = 91 Case 92 v2 = 92 Case 93 v2 = 93 Case 94 v2 = 94 Case 95 v2 = 95 Case 96 v2 = 96 Case 97 v2 = 97 Case 98 v2 = 98 Case 99 v2 = 99 Case 100 v2 = 100 Case 101 v2 = 101 Case 102 v2 = 102 Case 103 v2 = 103 Case 104 v2 = 104 Case 105 v2 = 105 Case 106 v2 = 106 Case 107 v2 = 107 Case 108 v2 = 108 Case 109 v2 = 109 Case 110 v2 = 110 Case 111 v2 = 111 Case 112 v2 = 112 Case 113 v2 = 113 Case 114 v2 = 114 Case 115 v2 = 115 Case 116 v2 = 116 Case 117 v2 = 117 Case 118 v2 = 118 Case 119 v2 = 119 Case 120 v2 = 120 Case 121 v2 = 121 Case 122 v2 = 122 Case 123 v2 = 123 Case 124 v2 = 124 Case 125 v2 = 125 Case 126 v2 = 126 Case 127 v2 = 127 Case 128 v2 = 199 Case 129 v2 = 252 Case 130 v2 = 233 Case 131 v2 = 226 Case 132 v2 = 228 Case 133 v2 = 224 Case 134 v2 = 229 Case 135 v2 = 231 Case 136 v2 = 234 Case 137 v2 = 235 Case 138 v2 = 232 Case 139 v2 = 239 Case 140 v2 = 238 Case 141 v2 = 236 Case 142 v2 = 196 Case 143 v2 = 197 Case 144 v2 = 201 Case 145 v2 = 230 Case 146 v2 = 198 Case 147 v2 = 244 Case 148 v2 = 246 Case 149 v2 = 242 Case 150 v2 = 251 Case 151 v2 = 249 Case 152 v2 = 255 Case 153 v2 = 214 Case 154 v2 = 220 Case 155 v2 = 248 Case 156 v2 = 163 Case 157 v2 = 216 Case 158 v2 = 215 Case 159 v2 = 0 Case 160 v2 = 225 Case 161 v2 = 237 Case 162 v2 = 243 Case 163 v2 = 250 Case 164 v2 = 241 Case 165 v2 = 209 Case 166 v2 = 170 Case 167 v2 = 186 Case 168 v2 = 191 Case 169 v2 = 174 Case 170 v2 = 172 Case 171 v2 = 189 Case 172 v2 = 188 Case 173 v2 = 161 Case 174 v2 = 171 Case 175 v2 = 187 Case 176 v2 = 0 Case 177 v2 = 0 Case 178 v2 = 0 Case 179 v2 = 0 Case 180 v2 = 0 Case 181 v2 = 193 Case 182 v2 = 194 Case 183 v2 = 192 Case 184 v2 = 169 Case 185 v2 = 0 Case 186 v2 = 0 Case 187 v2 = 0 Case 188 v2 = 0 Case 189 v2 = 162 Case 190 v2 = 165 Case 191 v2 = 0 Case 192 v2 = 0 Case 193 v2 = 0 Case 194 v2 = 0 Case 195 v2 = 0 Case 196 v2 = 0 Case 197 v2 = 0 Case 198 v2 = 227 Case 199 v2 = 195 Case 200 v2 = 0 Case 201 v2 = 0 Case 202 v2 = 0 Case 203 v2 = 0 Case 204 v2 = 0 Case 205 v2 = 0 Case 206 v2 = 0 Case 207 v2 = 164 Case 208 v2 = 240 Case 209 v2 = 208 Case 210 v2 = 202 Case 211 v2 = 203 Case 212 v2 = 200 Case 213 v2 = 0 Case 214 v2 = 205 Case 215 v2 = 206 Case 216 v2 = 207 Case 217 v2 = 0 Case 218 v2 = 0 Case 219 v2 = 0 Case 220 v2 = 0 Case 221 v2 = 166 Case 222 v2 = 204 Case 223 v2 = 0 Case 224 v2 = 211 Case 225 v2 = 223 Case 226 v2 = 212 Case 227 v2 = 210 Case 228 v2 = 245 Case 229 v2 = 213 Case 230 v2 = 181 Case 231 v2 = 222 Case 232 v2 = 254 Case 233 v2 = 218 Case 234 v2 = 219 Case 235 v2 = 217 Case 236 v2 = 253 Case 237 v2 = 221 Case 238 v2 = 175 Case 239 v2 = 180 Case 240 v2 = 173 Case 241 v2 = 177 Case 242 v2 = 0 Case 243 v2 = 190 Case 244 v2 = 182 Case 245 v2 = 167 Case 246 v2 = 247 Case 247 v2 = 184 Case 248 v2 = 176 Case 249 v2 = 168 Case 250 v2 = 183 Case 251 v2 = 185 Case 252 v2 = 179 Case 253 v2 = 178 Case 254 v2 = 0 Case 255 v2 = 0 End Select res = res & Chr(v2) Next i from_cp850 = res End Function
Function test() MsgBox from_cp850("abc") MsgBox from_cp850("‘›†") End Function
Det var ikke 'For i = 1 To Len(s)' der var linie 41, det var 'Select Case v', og den script-fortolker kan åbenbart ikke tage Select Case... Så nu har jeg lavet en masse Elseif'er... Og det virker også næsten...
Tegne bliver bare ikke oversat rigtig...
Jeg har taget disse tegn direkte fra eksport-filen: MsgBox koldsgaard("‘†") 'æØå (der blev ikke eksporteret et lille ø) Og af disse tegn er det kun Ø der bliver rigtig...
Jeg tror at filerne var i 437... Men hvorfor har jeg ingen anelsen om... Altså selve programmet Concorde C5, ligger på en nt server, som havde 437, men selve programmet blev kørt fra win98-maskiner med 850... Selvom jeg ændrede nt-serverens codepage til 850 eller 865 skete der ingen ændringer...
Men jeg lave en lille funktion i mit script, sårn at jeg kunne tage et tegn fra den eksporterede fil og så få tegn-koden... Og så lavede jeg mine egne 'oversættelser'...
Så lige nu har jeg kun oversat æøåÆØÅê° da de er de eneste tegn der skal oversættes... (Dvs. jeg har hvertfald ikke oplevet at der har været problemer med andre tegn)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.