[imgui] проблемы с выводом русского текста из imgui.InputText()

sat0ry

Известный
Автор темы
1,093
296
Версия MoonLoader
.026-beta
Приветствую, при выводе сообщения в sampSendChat или sampAddChatMessage у меня нахер какието каракули
 

sat0ry

Известный
Автор темы
1,093
296
ImGui использует Utf8
Самп использует cp1251
Перекодируй из utf8 в cp1251 (модуль encoding)
в этом и проблема

я сделал как u8
encoding:
cp1251 = encoding.CP1251

но я хз куда мне влепить это cp1251
 

RedHolms

Известный
Проверенный
620
367
encoding:
cp1251 = encoding.CP1251
Вызов cp1251 перекодирует строку ИЗ cp1251 В кодировку по умолчанию (как я понимаю, она у тебя cp1251)
Используй
Lua:
u8:decode
Либо меняй кодировку по умолчанию на utf8
 

sat0ry

Известный
Автор темы
1,093
296
Вызов cp1251 перекодирует строку ИЗ cp1251 В кодировку по умолчанию (как я понимаю, она у тебя cp1251)
Используй
Lua:
u8:decode
Либо меняй кодировку по умолчанию на utf8
а куда мне влепить u8:decode?
 

Liquit

Известный
283
108
стандартные либы, которые ставятся вместе с имгуи вроде
Lua:
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
чтобы юзать:
imgui.Text(u8:decode(sometext)) cp1251 -> utf8
local someVariable = u8:encode(sometext) utf8 -> cp1251

то есть, у меня например есть текст "Всем привет!", который я условно буду отправлять при входе.
чтобы сохранить в файле с настройками, мне нужно его хранить на русском(cp1251) т.е. helloText = u8:encode("Всем привет!")
чтобы уже в саму имгуишку нормально выводился текст, нужно с русского(cp1251) конвертировать в utf8, т.е. imgui.Text(u8:decode(helloText))
p.s. helloText здесь - переменная, если у тебя есть просто текст, который ты хочешь на русском написать, можно делать u8"Всем привет!"

пример
Lua:
--я типа в imgui.OnDrawFrame() с началом типа определения окна и вся фигня
local sometext = ""
if imgui.Button(u8"Клацни по мне!") then -- если жмакнули
    sometext = "Круто!"
end
imgui.Text(u8:decode(sometext)) -- россиянщина (cp1251) -> пендосщина(utf8)

--здесь типа конец всей фигни с имгуи
или можно
Lua:
local sometext = ""
if imgui.Button(u8"Клацни по мне!") then -- если жмакнули
    sometext = u8"Круто!" -- вместо того чтобы писать u8 в imgui.Text'e, бахнув здесь
end
imgui.Text(sometext)

лучше писать как в первом варианте, иногда нужно как во втором
 
  • Влюблен
Реакции: sat0ry