Если вы не используете Windows
Это СО либо полностью, либо почти не имеет для вас никакого отношения.
Если вы используете Windows 10
Проверьте Бета: Использовать Unicode UTF-8 для опции языковой поддержки по всему миру.
По крайней мере, в то время, когда я изначально писал этот ответ, текст рядом с этим флажком, относящимся к Unicode, утверждал, что он предназначен для программ, которые не поддерживают Unicode, но вы должны просто игнорировать это. [1]
В то время, когда я изначально писал этот ответ, флажок был найден под панелью управления, записью региона, вкладкой «Администрация», кнопкой «Изменить языковой стандарт системы».
Microsoft, возможно, изменила этот материал с тех пор, как я написал этот ответ, и может изменить его снова, например, переместив и / или переименовав флажок, или сделав что-то более сложным, чем просто установка одного флажка.
Согласно их комментарию под этим ответом, OP отмечает:
Для тех, кто заинтересован в этой конкретной опции, ее можно найти в устаревшей Панели управления Windows - ›Регион -› Административная - ›Изменить настройки ...
Если вы используете старую версию Windows
Возможно, хорошей новостью является то, что у Раку и Ракудо есть одни из лучших в мире современных поддержки Unicode, и хорошая новость заключается в том, что они полагаются на то, что Microsoft правильно поддерживает Unicode, что они теперь пытаются сделать. .
Плохая новость в том, что они сделали много ошибок в старых версиях Windows (и даже в Windows 10, которую они сейчас пытаются исправить), поэтому любое решение будет ограничено этими ошибками. (Возможно, самая большая проблема - это двусмысленность Microsoft по теме [1], но будем надеяться, что мы сможем обойти это.)
С учетом всего сказанного, пожалуйста, прочтите следующее, а затем либо вернитесь к поиску решений, либо опубликуйте новый вопрос SO, и мы постараемся помочь.
Цитата из страницы Википедии Unicode в Microsoft Windows:
они все еще в 2018 году улучшают поддержку своей операционной системы для UTF-8
Microsoft пошла не на ту ногу, поддержав Unicode в прошлом веке. Хорошая новость заключается в том, что они наконец начали рыть себе путь из ямы, которую вырыли для себя и всех остальных.
Но их определенно еще нет - не во время первоначального написания этого ответа, и, я подозреваю, не в течение следующих N лет - по крайней мере, поскольку у многих конечных пользователей что-то не работает правильно из коробки. Я думаю, что это корень большинства проблем с Unicode в Windows.
Старые языки, такие как Python, Ruby и Perl, предложили ряд уловок, которые скрывали многие проблемы со старой поддержкой Microsoft UTF8 от большинства пользователей в простых сценариях, используя то, что Microsoft иронично называла поддержкой Unicode.
Это всегда сопровождалось компромиссом: все становилось очень сложным или даже совершенно непригодным для работы с более сложными приложениями во многих регионах по всему миру. (Настолько, что даже могущественная Microsoft наконец капитулировала в 2018 году.)
По сути, до тех пор, пока Microsoft не попыталась использовать эту программу, у программного обеспечения, работающего в Windows, не было альтернативы, кроме как использовать принципиально нарушенную поддержку Unicode, или фактически поддерживать Unicode должным образом. [1] сильный>
Раку и Ракудо сосредоточились на последнем, и проблемы с ним при запуске в Windows связаны с этим противоречием старому ошибочному подходу Microsoft. К счастью, Microsoft сейчас внедряет программу, и поэтому мы, возможно, сможем найти способ обойти проблемы, возникающие у вас с Unicode в Windows, при условии, что вы проявите терпение.
В частности, если вы используете старую версию Windows, пожалуйста, ожидайте, что она сначала не будет работать с современным программным обеспечением, поддерживающим Unicode, если вам не повезет. Мы по-прежнему поможем, если сможем, но это, вероятно, потребует от вас терпения по отношению к нам, Microsoft и Rakudo и наоборот.
Сноски
[1] Когда я изначально писал этот ответ, рядом с флажком был текст, указывающий, что он предназначен для программ, которые не поддерживают Unicode. Это полная противоположность тому, что происходит на самом деле, но эй, это Microsoft.
person
raiph
schedule
16.03.2019
.txt
(как показано на снимке экрана), а также предоставьте фрагмент файла.txt
в виде текста (а не изображения) в вашем вопросе. Вы также должны опубликовать скрипт perl 6 в виде текста, это поможет нам скопировать и вставить, пытаясь воспроизвести ваше поведение. Спасибо! - person Håkon Hægland   schedule 15.03.2019perl6 -e 'say "\c[Latin Small Letter A with Acute]"'
Если это выводит á, тогда все в порядке. В противном случае проблема не в чтении файла, а в вашей командной строке не может обрабатываться вывод UTF8. Однако у меня под рукой нет Windows-машины, на которой можно было бы ее протестировать. - person Scimon Proctor   schedule 15.03.2019type testfile.txt
правильно ли выводит символ utf8? - person Scimon Proctor   schedule 15.03.2019perl6 -e 'say "\c[Latin Small Letter A with Acute]"'
=== ИЗВИНИТЕ! === Ошибка при компиляции -e Невозможно проанализировать выражение в одинарных кавычках; не удалось найти финал '(соответствующий начальный элемент был в строке 1) at -e: 1 ------ ›' say ‹HERE› ‹EOL›, ожидая любого из: термин в одинарных кавычках - person Frenzowski   schedule 15.03.2019type testfile.txt
дает тот же результат, что и Ракудо - person Frenzowski   schedule 15.03.2019perl6 -e "say qq/\c[Latin Small Letter A with Acute]/"
. У вас есть Windows PowerShell на вашем компьютере? Я рекомендую попробовать ту же команду, чтобы увидеть, не возникнет ли у вас та же проблема. (Приносим извинения за отсутствие разрывов строк, мобильный сайт SO, похоже, не позволяет мне правильно их вводить) - person Daniel Mita   schedule 15.03.2019>perl6 -e "say qq/\c[Latin Small Letter A with Acute]/"
>á
ps: Я недавно публикую на SO, мне не удалось включить разрывы строк (даже с двумя пробелами в конце строки) - person Frenzowski   schedule 15.03.2019