Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

Salvando arquivo .txt em modo ANSI em vez de UTF-8

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
icarodantas123
Novato
Novato
Reações: 0
Mensagens: 5

Salvando arquivo .txt em modo ANSI em vez de UTF-8

Mensagem por icarodantas123 » Seg Jun 06, 2016 1:48 pm

Galera eu estou tentando salvar umas coisas em um arquivo.txt do game maker, essas coisas tem acentos,etc... Estou usando file = file_text_open_write('last.txt'), porém quando eu salvo as coisas, fica tudo acanalhado com os acentos bugados :/

Avatar do usuário
gabrielsch
Colaborador
Colaborador
Reações: 0
Mensagens: 234

Re: Salvando arquivo .txt em modo ANSI em vez de UTF-8

Mensagem por gabrielsch » Seg Jun 06, 2016 3:00 pm

O manula do Game Maker fala sobre essa situação:
Please note that for games with localizations it is very important that accented letters can be read from external files. This means that you should create the txt file in UTF8 format first and then add it intoGameMaker: Studio as an included file so that it is exported on running the game and used instead of the default ANSI format txt file that is created by the GameMaker: Studio file functions when no file is previously supplied. In this way, you can read and write to it correctly with all accents and non-roman letters being maintained.
Para contornar esse problema basta criar um arquivo .txt com codificação UTF8 e adicionar aos included files do seu projeto, o arquivo não precisa ter nada escrito nele, um arquivo em branco já serve, basta o mesmo ter a codificação desejada.
Imagem

Avatar do usuário
icarodantas123
Novato
Novato
Reações: 0
Mensagens: 5

Re: Salvando arquivo .txt em modo ANSI em vez de UTF-8

Mensagem por icarodantas123 » Seg Jun 06, 2016 4:43 pm

Estou usando agora o http_get mas ele já pucha tudo bugado, ai usei a solução do rodrigo santiago, mas parece que na hora de fazer o código eu errei em algo...

Código: Selecionar todos

text = argument0;
for(i=1;i<=string_length(text);i++)
{
text = string_set_byte_at(text, i, ansi_char(string_byte_at(text, i)));
}
return text;
Edit:
ÉÉÉ eu fiz esse método agora, mas na hora do http_get_file ele já troca o arquivo direto pra ANSI... :/
E como já mencionado anteriormente, se usar http_get ele traz os caracteres tudo errado também :/

Avatar do usuário
KlabberyBlue
Membro
Membro
Reações: 0
Mensagens: 27
Localização: Montes Claros, MG

Re: Salvando arquivo .txt em modo ANSI em vez de UTF-8

Mensagem por KlabberyBlue » Seg Jun 06, 2016 6:07 pm

Cara então salve com a codificação Unicode ou Unicode Big Endian.
Tente uma das duas, talvez funcione...

Se for o caso de erro, em código faça um novo tópico, pedindo ajuda :).
Espero ter ajudado -------NEO!---------
Vlw!
Flw!
E fui!
"Você precisa derrubar, as portas que vão se fechar"

Avatar do usuário
chicoweb
Membro
Membro
Reações: 0
Mensagens: 135

Re: Salvando arquivo .txt em modo ANSI em vez de UTF-8

Mensagem por chicoweb » Seg Jun 06, 2016 9:49 pm

Rapaz isso ai eu tive uma dor de cabeça para resolver.

Não aidantou salvar como utf8, também não adianta configurar ele lá no server para ser utf8 ou outro formato, o gms sempre borroca tudo, o melhor jeito que eu criei na raça um script para isso.

É um script beta mas ja codifica o "ão" e o "á" para pegar os outros caracteres é fácil tem uma rotina no próprio scritp que exibe o código da letar na debug windows, ai depois é só colar a linha na parte de replace.

Vou postar aqui tá liberado se a galera quiser terminar ele: 

Código: Selecionar todos

/// Script utf8_decode by chicoweb

// Resolve problema de caracteres estranhdos quando volta de uma http_get por exemplo
// Chamada simples: minhavar = utf8_decode("texto desconfigurado")

// Texto a ser ajustado
str_data = argument0

// conforme for aparecendo vou implementadno aqui direto pelo chr
t = str_data
t = string_replace_all(t,chr(207),"ÃO")
t = string_replace_all(t,chr(96),"A")

// Aqui vc cata o código da letra em utf8
// ---------------------------------------------------
verifica_utf8 = true
if verifica_utf8{
    // ELE VAI exibie na debug uma tabela com so codes ascii e vai parar com uma msgbox
    // Na enesima palavra que vc escolheu
    palavra_quant = string_length(str_data)
    show_debug_message("=======================================================")
    show_debug_message("UTF8 TAB CODE AUX")
    show_debug_message("=======================================================")
    i = 0
    repeat palavra_quant{
        i += 1
        show_debug_message(string_char_at(str_data,i) + " = " + string(string_ord_at(str_data,i)))    
    }
    show_message("Check UTF8")
}

// retorno da função principal
return t 
Por exemplo o texto é 
"Fui na casa do Antônio"
Vai sair uma porcaria do tipo:
"Fui na casa do AntÊÑüio"

Aí vc pega a quinta palavra que e Antonio e joga no 

palavra_quant = 5

Dái vai aparecer uma tabela e vcvai ver o codigo do "ÊÑü" que vc sabe que é o "ô"
Então joga no script principal:

t = string_replace_all(t,chr(codexibidonadebug),"ô")

Porque vc nao acabou o script chicoweb?????
porque eu não quiz...

Zueira, preguiça mesmo, porque eu só precisava decodificar o Á e o ÃO
Meus games:
Jump James - Aventura/Estratégia/Robô
Freedom of Pala Pala - Aventura/Estratégia
Prisioneira - RPG/Bloco/Ação

Trancado

Quem está online

Usuários navegando neste fórum: Ahrefs [Bot] e 12 visitantes