На сколько я смог понять первая строка это юникод в 16 ричном формате. Кто подскажет как средствами VBA перевести эту строку в нормальный читаемый вид.
Добрый день. Не могу разобраться с одним вопросом. Есть строка вида
На сколько я смог понять первая строка это юникод в 16 ричном формате. Кто подскажет как средствами VBA перевести эту строку в нормальный читаемый вид.Poltava
Sub asd() s = "\u043f\u043e\u043b\u0443\u0442\u043e\u0440\u043d\u044b\u0439" a = Split(s, "\u") For i = 1 To UBound(a) a(i) = ChrW(Val("&H" & a(i))) Next i s = Join(a, "") End Sub
[/vba]
Здравствуйте. Если в лоб, то как то так - [vba]
Код
Sub asd() s = "\u043f\u043e\u043b\u0443\u0442\u043e\u0440\u043d\u044b\u0439" a = Split(s, "\u") For i = 1 To UBound(a) a(i) = ChrW(Val("&H" & a(i))) Next i s = Join(a, "") End Sub
Но с трудом вериться что нет такой штатной функции в VBA. [vba]
Код
Public Function Convert_UTF16_to_UTF8(str As String) For i = 1 To Len(str) If Mid(str, i, 2) = "\u" Then Convert_UTF16_to_UTF8 = Convert_UTF16_to_UTF8 & ChrW(Val("&H" & Mid(str, i + 2, 4))) i = i + 5 Else Convert_UTF16_to_UTF8 = Convert_UTF16_to_UTF8 & Mid(str, i, 1) End If Next i End Function
[/vba]
Апострофф, Спасибо. На базе вашего кода сделал небольшую UDF для корректной обработки строк типа
Но с трудом вериться что нет такой штатной функции в VBA. [vba]
Код
Public Function Convert_UTF16_to_UTF8(str As String) For i = 1 To Len(str) If Mid(str, i, 2) = "\u" Then Convert_UTF16_to_UTF8 = Convert_UTF16_to_UTF8 & ChrW(Val("&H" & Mid(str, i + 2, 4))) i = i + 5 Else Convert_UTF16_to_UTF8 = Convert_UTF16_to_UTF8 & Mid(str, i, 1) End If Next i End Function