1 (изменено: Phoenixxx_Czar, 2022-02-27 09:14:42)

Тема: AHK: Преобразование "\u***" в читабельный вид

Использую данную библиотеку JXON: https://github.com/cocobelgica/AutoHotk … r/Jxon.ahk
Появилась та самая старая проблема, из-за которой я перестал использовать ее, вместо русских символов оно использует что-то подобное: "\\u0435\\u0445", я так понимаю это символы в юникод формате или что-то типо того, как их можно привести в читабельный вид?

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

2

Re: AHK: Преобразование "\u***" в читабельный вид

Может, другую библиотеку использовать? Ну, или посмотрите код библиотеки, исключите диапазон символов русских букв из преобразования.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Преобразование "\u***" в читабельный вид

u0435 - русская е
u0445 - русская х
AHK: символы Unicode в окне GUI
Распознавание кириллицы и латиницы онлайн

4

Re: AHK: Преобразование "\u***" в читабельный вид

teadrinker пишет:

Может, другую библиотеку использовать?

Именно это я и делал, но почему-то она не захотела запускаться в unicode версии. Ругалось вроде на ComObj.

parse(jsonStr)
	{
		SC := ComObjCreate("ScriptControl")
		SC.Language := "JScript"
		ComObjError(false)

		jsCode =
		(
		function arrangeForAhkTraversing(obj){
			if(obj instanceof Array){
				for(var i=0 ; i<obj.length ; ++i)
					obj[i] = arrangeForAhkTraversing(obj[i]) ;
				return ['array',obj] ;
			}else if(obj instanceof Object){
				var keys = [], values = [] ;
				for(var key in obj){
					keys.push(key) ;
					values.push(arrangeForAhkTraversing(obj[key])) ;
				}
				return ['object',[keys,values]] ;
			}else
				return [typeof obj,obj] ;
		}
		)

		SC.ExecuteStatement(jsCode "; obj=" jsonStr)
		return this._convertJScriptObjToAhks( SC.Eval("arrangeForAhkTraversing(obj)") )
	}
Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

5

Re: AHK: Преобразование "\u***" в читабельный вид

Объект ScriptControl существует только в 32-битной версии, может в этом проблема. Но библиотек для JSON есть множество, в том числе и моих парочка.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Преобразование "\u***" в читабельный вид

Кхм, и в правду.. Первый раз я наверное запускал через 64 битную версию юникода, в 32 битной все работает. Спасибо.

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

7

Re: AHK: Преобразование "\u***" в читабельный вид

Есть более "умный" способ, чем этот?

test(string)
{
	static letters := {"\u0410": "А", "\u0430": "а", "\u0411": "Б", "\u0431": "б", "\u0412": "В", "\u0432": "в", "\u0413": "Г", "\u0433": "г", "\u0414": "Д", "\u0434": "д", "\u0415": "Е", "\u0435": "е", "\u0401": "Ё", "\u0451": "ё", "\u0416": "Ж", "\u0436": "ж", "\u0417": "З", "\u0437": "з", "\u0418": "И", "\u0438": "и", "\u0419": "Й", "\u0439": "й", "\u041a": "К", "\u043a": "к", "\u041b": "Л", "\u043b": "л", "\u041c": "М", "\u043c": "м", "\u041d": "Н", "\u043d": "н", "\u041e": "О", "\u043e": "о", "\u041f": "П", "\u043f": "п", "\u0420": "Р", "\u0440": "р", "\u0421": "С", "\u0441": "с", "\u0422": "Т", "\u0442": "т", "\u0423": "У", "\u0443": "у", "\u0424": "Ф", "\u0444": "ф", "\u0425": "Х", "\u0445": "х", "\u0426": "Ц", "\u0446": "ц", "\u0427": "Ч", "\u0447": "ч", "\u0428": "Ш", "\u0448": "ш", "\u0429": "Щ", "\u0449": "щ", "\u042a": "Ъ", "\u044a": "ъ", "\u042b": "Ы", "\u044b": "ы", "\u042c": "Ь", "\u044c": "ь", "\u042d": "Э", "\u044d": "э", "\u042e": "Ю", "\u044e": "ю", "\u042f": "Я", "\u044f": "я", "\u0490": "Ґ", "\u0491": "ґ", "\u0404": "Є", "\u0454": "є", "\u0406": "І", "\u0456": "і", "\u0407": "Ї", "\u0457": "ї"}

	for unicode, letter in letters
	{
		string := RegExReplace(string, "\Q" unicode "\E", letter)
	}

	return string
}
Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

8

Re: AHK: Преобразование "\u***" в читабельный вид

MsgBox, % Chr(0x457)
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: AHK: Преобразование "\u***" в читабельный вид

Выдает пустоту, я использую ANSI версию.

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

10

Re: AHK: Преобразование "\u***" в читабельный вид

Так и должно быть, это же Юникод-символ.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11

Re: AHK: Преобразование "\u***" в читабельный вид

А его можно перевести в ANSI символ?

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

12

Re: AHK: Преобразование "\u***" в читабельный вид

Не знаю, скорее всего нет. Символы Юникода с кодами выше 0xFF и так же выглядящие ANSI-символы с кодами в пределах 0 - 0xFF формально разные.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13

Re: AHK: Преобразование "\u***" в читабельный вид

По сути остается только мой вариант?

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

14

Re: AHK: Преобразование "\u***" в читабельный вид

Наверное.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder