Ahoj mám takový problém, v vb6 jsem pracoval na jednom projektu, který přejímal data ze staré dosovské aplikace, aměl jsem následující kod pro převod do windows - jedná se mi jen o převod znakových sad
Enum CodeTab
LATIN2 = 0
Windows = 1
Kamenicky = 2
BezDiakritiky = 3
End Enum
Public Function PrevodKodovani(S As String, From_tab As CodeTab, To_tab As CodeTab) As String
Const cLATIN2 As String = "a µe‚Ř·iˇÖo˘ŕuŁé…Ţyěí|cź¬dÔŇl–•nĺŐrýüsçćtś›z§¦|„‰”ŽÓ™šá"
Const cWIN_CS As String = "aáÁeéÉěĚiíÍoóÓuúÚůŮyýÝ|cčČdďĎlľĽnňŇrřŘsšŠtťŤzžŽ|äëöüÄËÖÜß"
Const cKAMENI As String = "a Źe‚‰iˇ‹o˘•uŁ—–¦yť|c‡€d…lŚśn¤Ąr©žs¨›tź†z‘’|„‰”ŽÓ™šá"
Const cBEZDIA As String = "aaAeeEeEiiIooOuuUuUyyY|ccCddDllLnnNrrRssSttTzzZ|aeouAEOUá"
Dim i#
Dim NewS$
Dim p#
NewS = S
Dim SelectTable As CodeTab
Dim FromTable As String, ToTable As String, tmpTable As String
''From
SelectTable = From_tab
GoSub SelectTable
FromTable = tmpTable
''To
SelectTable = To_tab
GoSub SelectTable
ToTable = tmpTable
For i = 1 To Len(S)
p = InStr(FromTable, Mid(S, i, 1))
If p <> 0 Then 'nalen znak?
Mid(NewS, i, 1) = Mid(ToTable, p, 1) 'zamenit znak
End If
Next 'i
PrevodKodovani = NewS
Exit Function
SelectTable:
Select Case SelectTable
Case LATIN2
tmpTable = cLATIN2
Case Windows
tmpTable = cWIN_CS
Case Kamenicky
tmpTable = cKAMENI
Case BezDiakritiky
tmpTable = cBEZDIA
Case Else
Debug.Assert False
End Select
Return
End Function
no a zákazník se v poslední chvíli rozhodl že ne vb6 ale vb.NET a mne se nedaří narychlo vymyslet něco podobného, původní kod nechodí, v řetězcích jazyka to hlasí neznámé znaky. Prosím o radu, jak na to Děkuji
|