incompatible character encodings ascii-8bit and ut

Больше
9 года 4 нед. назад - 9 года 4 нед. назад #97459 от LexL
Столкнулся с такой проблемой - при переводе игры на VX ACE вылетает ошибка incompatible character encodings ascii-8bit and utf-8
В скрипте, который подгружает текст из текстового файла. С английским текстом всё в порядке. С русским иногда (хз от чего зависит) всё норм а иногда выкидывает ошибку. Какую кодировку ему подсунуть чтобы не ругался?

Вот собственно скрипт выкидывающий ошибку. На строчке на которую ругается всплывающее окошко поставил комментарий. Сам в скриптинге не силён.


Скрипт


Пока смог выяснить что вылет происходит при вставке имени персонажа из базы игры на подобие такого:

<N1>[Вау! N<3> и правда это делает.]

Причём первое имя улетает в заголовок без проблем, а вот имя посреди текста выкидывает с ошибкой. Причём не важно набрано оно латиницей или кириллицей. Отказаться от такого ввода имени не могу т.к. в игре в начале вводится имя гг.
Последнее редактирование: 9 года 4 нед. назад пользователем LexL.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

1 место в Готв 3 место Учитель Разработчик 3 место Готв Ветеран Писатель 2 место Тестер
Больше
9 года 4 нед. назад #97460 от Демий
Ну... Судя по такому отрывку информации можно предположить, что проблема в японской локали, она не очень дружит с кириллицей. Либо менять локаль, либо переводить через гугл переводчик и набирать его экранной клавиатурой текст.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
9 года 4 нед. назад - 9 года 4 нед. назад #97461 от LexL
А при чём тут яп локаль? Оригинал игры пишется на английском, перевожу на русский.
Оригинальные файлы на английском имеют кодировку UTF-8 без BOM. И с английским текстом проблем нет.
Проблема вылезает когда скрипт судя по всему собирает строчку перед выводом и должен вставить имя персонажа из базы данных игры в строчку с русским текстом. Пока имени нет всё нормально воспроизводится и на русском.
Последнее редактирование: 9 года 4 нед. назад пользователем LexL.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

1 место в Готв 3 место Учитель Разработчик 3 место Готв Ветеран Писатель 2 место Тестер
Больше
9 года 4 нед. назад #97467 от Демий

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Коммерсант Проект года 1 место Учитель Проект месяца 1 место
Больше
9 года 4 нед. назад #97473 от Iren_Rin
Я так понимаю сам скрипт никто не смотрел? :laugh: Где же пометка 18+ на теме? :cheer:

1. Не нашел обещанного комментария на строчке, где ошибка.
2. Внешние файлы должны быть в UTF-8 обязательно.
3. Поставь это до скрипта. Авторство кода - Стрелок.
Code:
module Kernel#Force UTF-8 alias fix_load_data load_data def load_data(file) data = fix_load_data(file) if data.kind_of?(String) data.force_encoding('UTF-8') end data end end
Спасибо сказали: ZX_Lost_Soul, Lipton, LexL

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
9 года 4 нед. назад - 9 года 3 нед. назад #97475 от LexL
Спасибо! Код работает идеально!
Стрелок - настоящий волшебник!
Этот код починил ещё один скрипт, который при переводе вместо русских букв выдавал одни квадратики.
Отложу код к себе в копилочку.
Ещё раз спасибо за оперативный ответ!

P.S.: там в коде единственная строчка с комментом на русском
Code:
line = line.gsub(values[i].to_s, $game_actors[number.to_i].name) #на эту строчку ругается игра


Если кому интересно - вот сама игра в переводе Urban Demons . Игрушка 18+
Последнее редактирование: 9 года 3 нед. назад пользователем Cerberus. Причина: объединил два сообщения

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.113 секунд
Работает на Kunena форум