Войти на сайт

Авторизация, ждите ...
×

ТЕМА: incompatible character encodings ascii-8bit and ut

incompatible character encodings ascii-8bit and ut 7 года 7 мес. назад #97459

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

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


Скрипт [ Нажмите, чтобы развернуть ]


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

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

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

incompatible character encodings ascii-8bit and ut 7 года 7 мес. назад #97460

  • Демий
  • Демий аватар
  • Вне сайта
  • Модератор
  • Здесь могла быть ваша реклама
  • Сообщений: 1597
  • Спасибо получено: 1520
  • 3 место Готв1 место в ГотвВетеранРазработчикТестер3 местоУчительПисатель 2 место
Ну... Судя по такому отрывку информации можно предположить, что проблема в японской локали, она не очень дружит с кириллицей. Либо менять локаль, либо переводить через гугл переводчик и набирать его экранной клавиатурой текст.
Администратор запретил публиковать записи гостям.

incompatible character encodings ascii-8bit and ut 7 года 7 мес. назад #97461

  • LexL
  • LexL аватар
  • Вне сайта
  • Путник
  • Сообщений: 3
А при чём тут яп локаль? Оригинал игры пишется на английском, перевожу на русский.
Оригинальные файлы на английском имеют кодировку UTF-8 без BOM. И с английским текстом проблем нет.
Проблема вылезает когда скрипт судя по всему собирает строчку перед выводом и должен вставить имя персонажа из базы данных игры в строчку с русским текстом. Пока имени нет всё нормально воспроизводится и на русском.
Последнее редактирование: 7 года 7 мес. назад от LexL.
Администратор запретил публиковать записи гостям.

incompatible character encodings ascii-8bit and ut 7 года 7 мес. назад #97467

  • Демий
  • Демий аватар
  • Вне сайта
  • Модератор
  • Здесь могла быть ваша реклама
  • Сообщений: 1597
  • Спасибо получено: 1520
  • 3 место Готв1 место в ГотвВетеранРазработчикТестер3 местоУчительПисатель 2 место
В общем, без демо не разобраться.
Администратор запретил публиковать записи гостям.

incompatible character encodings ascii-8bit and ut 7 года 7 мес. назад #97473

  • Iren_Rin
  • Iren_Rin аватар
  • Вне сайта
  • Мастер
  • Сообщений: 247
  • Спасибо получено: 537
  • Программист RubyКоммерсантУчительПроект года 1 местоПроект месяца 1 место
Я так понимаю сам скрипт никто не смотрел? :laugh: Где же пометка 18+ на теме? :cheer:

1. Не нашел обещанного комментария на строчке, где ошибка.
2. Внешние файлы должны быть в UTF-8 обязательно.
3. Поставь это до скрипта. Авторство кода - Стрелок.
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

incompatible character encodings ascii-8bit and ut 7 года 7 мес. назад #97475

  • LexL
  • LexL аватар
  • Вне сайта
  • Путник
  • Сообщений: 3
Спасибо! Код работает идеально!
Стрелок - настоящий волшебник!
Этот код починил ещё один скрипт, который при переводе вместо русских букв выдавал одни квадратики.
Отложу код к себе в копилочку.
Ещё раз спасибо за оперативный ответ!

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


Если кому интересно - вот сама игра в переводе Urban Demons. Игрушка 18+
Последнее редактирование: 7 года 7 мес. назад от Cerberus. Причина: объединил два сообщения
Администратор запретил публиковать записи гостям.
Модераторы: NeKotZima
Время создания страницы: 0.265 секунд