Я предполагаю, что это означает, что мое приложение выводит три символа UTF-16 вместо одного UTF-8.
Это на самом деле не UTF-16, который редко используется в Интернете (и во многом там ломается).Ваше приложение выводит три символа Unicode (включая два невидимых управляющих кода), но это не то же самое, что кодировка UTF-16.
Возможно, проблема в том, что YAMLфайл читается так, как если бы он был в кодировке ISO-8859-1, так что байт \xE2
отображается на символ U + 00E2 и так далее.Я предполагаю, что вы используете Ruby 1.9, а YAML анализируется в байтовые строки с соответствующей кодировкой ASCII-8BIT вместо UTF-8, что приводит к тому, что строки подвергаются циклу транскодирования (искажения) позже.в этом случае вам, возможно, придется force_encoding
считать строки обратно тем, какими они должны были быть, или установить default_internal
, чтобы строки считывались обратно в UTF-8.Беспорядок это.