Добрый день. При парсинге JSON c сайта все русские слова оказались закодированы в таком виде
\u0414\u0436\u0435\u043d\u0442\u0440\u0430
Очень хороший сервис в сети 2cyr.com/decode подсказал, что тут зашифровано слово "Джентра"
Подскажите, как написать функцию по раскодировке? Или может быть уже что-то есть готовое, я правда не нашел. Или хотя бы почитать про подобную кодировку..
Большое спасибо.
Добрый день. При парсинге JSON c сайта все русские слова оказались закодированы в таком виде
\u0414\u0436\u0435\u043d\u0442\u0440\u0430
Очень хороший сервис в сети 2cyr.com/decode подсказал, что тут зашифровано слово "Джентра"
Подскажите, как написать функцию по раскодировке? Или может быть уже что-то есть готовое, я правда не нашел. Или хотя бы почитать про подобную кодировку..
Function ReplaceUnicodeChars(ByVal txt$) As String ' ищет в тексте txt$ коды символов Unicode (типа \u2013, \u201d) ' и заменяет коды этих символов на сами символы On Error Resume Next: Err.Clear Static REGEXP As Object If REGEXP Is Nothing Then Set REGEXP = CreateObject("VBScript.RegExp") REGEXP.Global = True REGEXP.Pattern = "\\u[0-9a-f]{4}" End If If REGEXP.test(txt) Then ' если в тексте присутствуют коды символов Set objMatches = REGEXP.Execute(txt) For i = 0 To objMatches.Count - 1 code$ = objMatches.Item(i).Value ' очередной найденный код (например, \u201d) charcode& = Val(Replace(code$, "\u", "&H")) ' получаем код символа If charcode& Then txt = Replace(txt, code$, ChrW(charcode&)) ' выполняем замену кода на символ Next End If ReplaceUnicodeChars = txt End Function
[/vba]
============= Кстати, а что за символ доллара в конце некоторых переменных? code$ txt$ ??
Function ReplaceUnicodeChars(ByVal txt$) As String ' ищет в тексте txt$ коды символов Unicode (типа \u2013, \u201d) ' и заменяет коды этих символов на сами символы On Error Resume Next: Err.Clear Static REGEXP As Object If REGEXP Is Nothing Then Set REGEXP = CreateObject("VBScript.RegExp") REGEXP.Global = True REGEXP.Pattern = "\\u[0-9a-f]{4}" End If If REGEXP.test(txt) Then ' если в тексте присутствуют коды символов Set objMatches = REGEXP.Execute(txt) For i = 0 To objMatches.Count - 1 code$ = objMatches.Item(i).Value ' очередной найденный код (например, \u201d) charcode& = Val(Replace(code$, "\u", "&H")) ' получаем код символа If charcode& Then txt = Replace(txt, code$, ChrW(charcode&)) ' выполняем замену кода на символ Next End If ReplaceUnicodeChars = txt End Function
[/vba]
============= Кстати, а что за символ доллара в конце некоторых переменных? code$ txt$ ??PATRI0T
Function Unescape$(uStr$) With CreateObject("scriptcontrol") .Language = "JScript" Unescape = .Eval("unescape(""" & uStr & """)") End With End Function
[/vba] и, на всякий случай, с помощью того же scriptcontrol можно парсить json, например вот UPD. Исправил косяк в коде
а у мну вот такая функция есть [vba]
Код
Function Unescape$(uStr$) With CreateObject("scriptcontrol") .Language = "JScript" Unescape = .Eval("unescape(""" & uStr & """)") End With End Function
[/vba] и, на всякий случай, с помощью того же scriptcontrol можно парсить json, например вот UPD. Исправил косяк в кодеkrosav4ig