Это может показаться незначительным, но это сводило меня с ума. С момента выпуска приложения в рабочую среду в прошлую пятницу на Ruby 1.9 у меня было много мелких исключений, связанных с кодировками символов. Почти все это является некоторыми вариациями на тему:
Encoding::CompatibilityError: incompatible character encodings: ASCII-8BIT and UTF-8
У нас есть международная база пользователей, поэтому многие имена содержат умлауты и т. д. Если я исправлю шаблоны для использования force_encoding в нескольких местах, он появится во всплывающем помощнике по сообщениям. И так далее.
На данный момент похоже, что я прибил все, о чем знал, исправив конкатенацию строк ActiveSupport в одном месте, а затем установив # encoding: utf-8
в начале каждого из моих исходных файлов. Но ощущение, что мне, возможно, придется помнить об этом для каждого файла каждого проекта Ruby, который я когда-либо буду делать с этого момента, навсегда, просто чтобы избежать проблем с назначением строк, не устраивает меня в желудке. Я читал о переключателе -Ku, но все, кажется, предупреждают, что это для обратной совместимости и может исчезнуть в любое время.
Итак, мой вопрос к опытным в 1.9 людям: действительно необходимо ли устанавливать #encoding
в каждом из моих файлов? Есть ли разумный способ сделать это глобально? Или, лучше, способ установить кодировку по умолчанию для небуквенных значений строк, которые обходят внутренние/внешние значения по умолчанию?
Спасибо заранее за любые предложения.