Я пытаюсь перенести веб-приложение из Windows 2008 vps в выделенный vps Windows 2008 (как 32-разрядная версия). Проблема, которую я заметила (и я с ней сражаюсь более 24 часов), состоит в том, что большая часть текста приходит в искаженном виде (и это разрушает все приложение). приложение работает следующим образом: (html + js) -> php -> vb6 dll -> reply.Струнные строки StrConv() на сервере Windows 2008
Первоначально я думал, что это проблема с кодировкой и iis, но я думаю, что это не так. Я сузил проблему до этого:
когда функции .dll называется строковые параметры функций первым разобраны и переведены на vb6 правильный формат:
Public Function getCorrectStringNoTrans(ByVal strWord As String) As String
If strWord <> "" Then
If isUTF8 = False Then
strWord = Trim$(strWord)
Else
Open "c:\log.txt" For Output As #1
Dim lol As Integer
For lol = 1 To Len(strWord)
Print #1, "bef:" & lol & ":" & Mid$(strWord, lol, 1) & ":" & AscW(Mid$(strWord, lol, 1)) & ":" & Asc(Mid$(strWord, lol, 1))
Next lol
strWord = StrConv(strWord, vbFromUnicode)
For lol = 1 To Len(strWord)
Print #1, "aft:" & lol & ":" & Mid$(strWord, lol, 1) & ":" & AscW(Mid$(strWord, lol, 1)) & ":" & Asc(Mid$(strWord, lol, 1))
Next lol
inData = strWord
Dim c As New crc
Dim lll As Long
lll = UBound(inData)
Print #1, c.CRC32(inData, lll)
Close #1
strWord = Trim$(ConvertUtf8BytesToString(inData))
'''strWord = Replace$(Trim$(ConvertUtf8BytesToString(inData)), "\'", "'")
End If
End If
getCorrectStringNoTrans = strWord
End Function
Так в живой машине 1 (ток один, который работает должным образом) выход для определенной строки есть (последний номер является проверка CRC):
bef:1:Ξ:926:206
bef:2:Ί:906:186
bef:3:Ξ:926:206
bef:4:±:177:177
bef:5:Ξ:926:206
bef:6:»:187:187
bef:7:Ο:927:207
bef:8::140:140
bef:9:Ο:927:207
bef:10:‚:8218:130
aft:1:?:-17714:63
aft:2:?:-20018:63
aft:3:?:-17458:63
aft:4:?:-29489:63
aft:5:?:-32049:63
1958248078
но в новой машине выход:
bef:1:Ξ:926:206
bef:2:Ί:906:186
bef:3:Ξ:926:206
bef:4:±:177:177
bef:5:Ξ:926:206
bef:6:»:187:187
bef:7:Ο:927:207
bef:8::140:140
bef:9:Ο:927:207
bef:10:‚:8218:130
aft:1:?:16191:63
aft:2:?:-20161:63
aft:3:?:-17601:63
aft:4:?:16191:63
aft:5:?:-32193:63
523875602
поэтому ascw() показывает, что строка перепуталась после strconv() в новом компьютере Я пытаюсь перейти на.
я трижды проверил настройки в панели управления -> Язык и региональные стандарты и все настройки одинаковы в обеих машинах:
форматы Закладка: Текущий формат: греческий
вкладка Расположение: текущее местоположение : греция
вкладка административный: язык для не-Unicode программ: греческий
Тогда я подумал, что, возможно, это проблема с пакетом обновления 2, потому что правильно работает машина была sp2, и этот я experime nting был sp1, поэтому я обновил, но, увы, никаких результатов.
Я не понимаю, почему strconv() не работает должным образом. Может быть, мне что-то не хватает в настройках или установке. Любые идеи будут высоко оценены.
p.s. он также корректно работает в машине разработки Windows XP с iis5.
Кроме того, проверьте «Option Explicit» и убедитесь, что вы объявили все свои переменные. – Deanna