Является ли это проблемой маркировки порядка следования байтов?

Я использую цветовую обертку .

cw is a non-intrusive real-time ANSI color wrapper for common unix-based commands on GNU/linux. cw is designed to simulate the environment of the commands being executed, so that if a person types 'du', 'df', 'ping', etc. in their shell it will automatically color the output in real-time according to a definition file containing the color format desired. cw has support for wildcard match coloring, tokenized coloring, headers/footers, case scenario coloring, command line dependent definition coloring, and includes over 50 pre-made definition files.

Это почти незаметно, но однажды я обнаружил, что ps в интерактивной оболочке возвращает разные выходные данные, сравнивая ps в канале.

1
17.01.2020, 00:15
2 ответа

Возможно что-то вроде

iconv -fUTF16 -tUTF8 file
2
27.01.2020, 23:14

По моему мнению, метки порядка следования байтов — это немного беспорядок, и, как правило, они не нужны в современных вычислениях. Их первоначальное использование было для UTF -16 и UTF -32, которые для обмена между компьютерами с различной архитектурой нуждались в способе различать маленький -порядок байтов и большой -порядок байтов . UTF -16 и UTF -32 в наши дни гораздо менее популярны, чем UTF -8, а utf -8 не требует спецификации .

Стандарт использования спецификации раздражающе расплывчат:

См. стр. 67 здесь:http://www.unicode.org/versions/Unicode12.0.0/UnicodeStandard-12.0.pdf

Data streams (or files) that begin with the U+FEFF byte order mark are likely to contain Unicode characters. It is recommended that applications sending or receiving untyped data streams of coded characters use this signature. If other signaling methods are used, signatures should not be employed.

Как правило, большинство потоков данных являются типизированными. Например, файлы конфигурации utf -8, как ожидается, будут utf -8, и поэтому по определению не являются «нетипизированными». Таким образом, как правило, спецификацию не следует включать, если вы не знаете иного.

Вероятность возникновения проблем при добавлении спецификации выше, чем при ее удалении. UTF -8 была разработана для обратной совместимости с ASCII . Это позволяет вам использовать UTF -8 во многих местах, где ожидался только ASCII. Но спецификация не является частью и не является ASCII, и многие/большинство программ, читающих текстовые файлы, плохо с ней справляются. Большинство не знают, что нужно игнорировать его в начале файла или удалять при объединении файлов. Программы, которые ожидают спецификацию, обычно терпимы к ее отсутствию.

Однако многие текстовые редакторы добавляют спецификацию, не сообщая вам об этом. Возможно, вы случайно добавили его при редактировании файла конфигурации.

Есть еще один вопрос, напрямую связанный с удалением спецификации :Как удалить спецификацию из файла UTF -8?

Я бы удалил все спецификации, добавленные в ваши файлы конфигурации. Маловероятно, что MS SQL их ожидает.

6
27.01.2020, 23:14

Теги

Похожие вопросы