dalvorsn 268 Postado Outubro 3, 2016 Share Postado Outubro 3, 2016 unicode2latin1(str) A função recebe como parametro uma string 'str', e procura nela ocorrencias de unicode/utf8 dos principais acentos usados e converte para latin1/iso-8859-1.Não é feita a conversão de todos os caracteres possíveis, pois não é bem o intuito da função, mas caso queira adicionar basta incluir no map de caracteres. Os demais caracteres estão disponiveis nesta tabela. function unicode2latin1(str) local map = { -- ÁáÀàÂâÃã {utf = {0xc3, 0x81}, latin = 0xc1}, -- Á {utf = {0xc3, 0xa1}, latin = 0xe1}, -- á {utf = {0xc3, 0x80}, latin = 0xc0}, -- À {utf = {0xc3, 0xa0}, latin = 0xe0}, -- à {utf = {0xc3, 0x82}, latin = 0xc2}, --  {utf = {0xc3, 0xa2}, latin = 0xe2}, -- â {utf = {0xc3, 0x83}, latin = 0xc3}, -- à {utf = {0xc3, 0xa3}, latin = 0xe3}, -- ã -- ÉéÈèÊê {utf = {0xc3, 0x89}, latin = 0xc9}, -- É {utf = {0xc3, 0xa9}, latin = 0xe9}, -- é {utf = {0xc3, 0x88}, latin = 0xc8}, -- È {utf = {0xc3, 0xa8}, latin = 0xe8}, -- è {utf = {0xc3, 0x8a}, latin = 0xca}, -- Ê {utf = {0xc3, 0xaa}, latin = 0xea}, -- ê -- ÍíÌìÎî {utf = {0xc3, 0x8d}, latin = 0xcc}, -- Í {utf = {0xc3, 0xad}, latin = 0xec}, -- í {utf = {0xc3, 0x8c}, latin = 0xcd}, -- Ì {utf = {0xc3, 0xac}, latin = 0xed}, -- ì {utf = {0xc3, 0x8e}, latin = 0xce}, -- Î {utf = {0xc3, 0xae}, latin = 0xee}, -- î -- ÓóÒòÔôÕõ {utf = {0xc3, 0x93}, latin = 0xd3}, -- Ó {utf = {0xc3, 0xb3}, latin = 0xf3}, -- ó {utf = {0xc3, 0x92}, latin = 0xd2}, -- Ò {utf = {0xc3, 0xb2}, latin = 0xf2}, -- ò {utf = {0xc3, 0x94}, latin = 0xd4}, -- Ô {utf = {0xc3, 0xb4}, latin = 0xf4}, -- ô {utf = {0xc3, 0x95}, latin = 0xd5}, -- Õ {utf = {0xc3, 0xb5}, latin = 0xf5}, -- õ -- ÚúÙùÛû {utf = {0xc3, 0x9a}, latin = 0xda}, -- Ú {utf = {0xc3, 0xba}, latin = 0xfa}, -- ú {utf = {0xc3, 0x99}, latin = 0xd9}, -- Ù {utf = {0xc3, 0xb9}, latin = 0xf9}, -- ù {utf = {0xc3, 0x9b}, latin = 0xdb}, -- Û {utf = {0xc3, 0xbb}, latin = 0xfb}, -- û -- Çç {utf = {0xc3, 0x87}, latin = 0xc7}, -- Ç {utf = {0xc3, 0xa7}, latin = 0xe7} -- ç } if type(str) == "string" then for i = 1, #map do str = str:gsub(string.char(unpack(map[i].utf)), string.char(map[i].latin)) end end return strend Link para o comentário Compartilhar em outros sites More sharing options...
wougoplex 27 Postado Outubro 3, 2016 Share Postado Outubro 3, 2016 9 minutos atrás, dalvorsn disse: unicode2latin1(str) A função recebe como parametro uma string 'str', e procura nela ocorrencias de unicode/utf8 dos principais acentos usados e converte para latin1/iso-8859-1. Não é feita a conversão de todos os caracteres possíveis, pois não é bem o intuito da função, mas caso queira adicionar basta incluir no map de caracteres. Os demais caracteres estão disponiveis nesta tabela. function unicode2latin1(str) local map = { -- ÁáÀàÂâÃã {utf = {0xc3, 0x81}, latin = 0xc1}, -- Á {utf = {0xc3, 0xa1}, latin = 0xe1}, -- á {utf = {0xc3, 0x80}, latin = 0xc0}, -- À {utf = {0xc3, 0xa0}, latin = 0xe0}, -- à {utf = {0xc3, 0x82}, latin = 0xc2}, --  {utf = {0xc3, 0xa2}, latin = 0xe2}, -- â {utf = {0xc3, 0x83}, latin = 0xc3}, -- à {utf = {0xc3, 0xa3}, latin = 0xe3}, -- ã -- ÉéÈèÊê {utf = {0xc3, 0x89}, latin = 0xc9}, -- É {utf = {0xc3, 0xa9}, latin = 0xe9}, -- é {utf = {0xc3, 0x88}, latin = 0xc8}, -- È {utf = {0xc3, 0xa8}, latin = 0xe8}, -- è {utf = {0xc3, 0x8a}, latin = 0xca}, -- Ê {utf = {0xc3, 0xaa}, latin = 0xea}, -- ê -- ÍíÌìÎî {utf = {0xc3, 0x8d}, latin = 0xcc}, -- Í {utf = {0xc3, 0xad}, latin = 0xec}, -- í {utf = {0xc3, 0x8c}, latin = 0xcd}, -- Ì {utf = {0xc3, 0xac}, latin = 0xed}, -- ì {utf = {0xc3, 0x8e}, latin = 0xce}, -- Î {utf = {0xc3, 0xae}, latin = 0xee}, -- î -- ÓóÒòÔôÕõ {utf = {0xc3, 0x93}, latin = 0xd3}, -- Ó {utf = {0xc3, 0xb3}, latin = 0xf3}, -- ó {utf = {0xc3, 0x92}, latin = 0xd2}, -- Ò {utf = {0xc3, 0xb2}, latin = 0xf2}, -- ò {utf = {0xc3, 0x94}, latin = 0xd4}, -- Ô {utf = {0xc3, 0xb4}, latin = 0xf4}, -- ô {utf = {0xc3, 0x95}, latin = 0xd5}, -- Õ {utf = {0xc3, 0xb5}, latin = 0xf5}, -- õ -- ÚúÙùÛû {utf = {0xc3, 0x9a}, latin = 0xda}, -- Ú {utf = {0xc3, 0xba}, latin = 0xfa}, -- ú {utf = {0xc3, 0x99}, latin = 0xd9}, -- Ù {utf = {0xc3, 0xb9}, latin = 0xf9}, -- ù {utf = {0xc3, 0x9b}, latin = 0xdb}, -- Û {utf = {0xc3, 0xbb}, latin = 0xfb}, -- û -- Çç {utf = {0xc3, 0x87}, latin = 0xc7}, -- Ç {utf = {0xc3, 0xa7}, latin = 0xe7} -- ç } if type(str) == "string" then for i = 1, #map do str = str:gsub(string.char(unpack(map[i].utf)), string.char(map[i].latin)) end end return strend Pra que serve ? Link para o comentário Compartilhar em outros sites More sharing options...
dalvorsn 268 Postado Outubro 3, 2016 Autor Share Postado Outubro 3, 2016 Bom, ai vai variar de como usa, mas por exemplo se quiser que os npcs se comuniquem com acentuação brasileira, com essa função fica facil, porque tu converte o texto pra um formato que o cliente consegue interpretar e acentuar corretamente, e para não ficar algo pesado eu deixei mais voltado pros acentos mesmo. Se voce tiver um pouco mais de conhecimento da pra alterar o look de sigs, items e etc. Enfim, o modo que vai usar é contigo, mas a função é codificar os acentos. Link para o comentário Compartilhar em outros sites More sharing options...
Administrador Administrador 1435 Postado Outubro 3, 2016 Administrador Share Postado Outubro 3, 2016 Ótima contribuição com certeza, é realmente chato ter que se limitar a acentos no Tibia, as vezes. Link para o comentário Compartilhar em outros sites More sharing options...
Lordfire 309 Postado Outubro 3, 2016 Share Postado Outubro 3, 2016 Ué, mas Unicode tem suporte a todos os caracteres ._. o client usa latin1? Link para o comentário Compartilhar em outros sites More sharing options...
dalvorsn 268 Postado Outubro 3, 2016 Autor Share Postado Outubro 3, 2016 4 horas atrás, Lordfire disse: Ué, mas Unicode tem suporte a todos os caracteres ._. o client usa latin1? Não cheguei a testar no cliente do tibia, mas no otclient pelo menos ele usa o cp1252, sempre configura pro locale do pc que ta rodando. Link para o comentário Compartilhar em outros sites More sharing options...
Deadpool 862 Postado Outubro 3, 2016 Share Postado Outubro 3, 2016 É um ótimo conteúdo. Eu usava a opção de converter no notepad. uaheudh Curti, ficou bacana. Link para o comentário Compartilhar em outros sites More sharing options...
Lordfire 309 Postado Outubro 4, 2016 Share Postado Outubro 4, 2016 16 horas atrás, dalvorsn disse: Não cheguei a testar no cliente do tibia, mas no otclient pelo menos ele usa o cp1252, sempre configura pro locale do pc que ta rodando. Ah, assumo que vc programa no Windows então, o que é um problema ahuauhauhauha Link para o comentário Compartilhar em outros sites More sharing options...
dalvorsn 268 Postado Outubro 4, 2016 Autor Share Postado Outubro 4, 2016 6 minutos atrás, Lordfire disse: Ah, assumo que vc programa no Windows então, o que é um problema ahuauhauhauha Buga os acentos nos dois Na real eu programo a maioria do tempo no linux, só quando preciso mesmo que eu vou pro windows(sofrido isso) Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados