Не удается определить тип кодировки юникод сохраните файл с сигнатурой bom
Чтобы установить требуемую кодировку для сохранения проектов в Visual Studio Code, например, UTF-8, нужно зайти в пункт меню программы Файл / Параметры / Параметры (Ctrl + ,), где найти аттрибут files. encoding.
Что такое кодировка и почему она важна?
VS Code управляет интерфейсом ввода строки символов в буфер пользователем и чтения-записи блоков байтов в файловой системе. При сохранении файла в VS Code используется кодирование текста для определения того, какие байты получит каждый символ. Подробные сведения см. в статье О шифровании символов.
Аналогичным образом, когда оболочка PowerShell запускает скрипт, ей необходимо преобразовать байты из файла в символы для преобразования файла в программу PowerShell. Так как VS Code записывает файл, а PowerShell считывает файл, этим средствам необходимо использовать одну и ту же систему кодировки. Этот процесс синтаксического анализа скрипта PowerShell идет так: байты -> символы -> лексемы -> дерево абстрактного синтаксиса -> выполнение.
И VS Code, и PowerShell устанавливаются с подходящей конфигурацией кодировки по умолчанию. Тем не менее кодировка по умолчанию, используемая PowerShell, была изменена с выпуском PowerShell 6. Чтобы избежать проблем с PowerShell и расширениями PowerShell в VS Code, необходимо настроить параметры VS Code и PowerShell должным образом.
Какая кодировка для русского языка?
Наиболее распространёнными кодировками с поддержкой Русского языка (с использованием символов Кириллицы) являются: UTF-8, Windows-1251, CP-866, KOI-8R, ISO-8859-5.
Как сменить кодировку на UTF-8?
Распространенные причины проблемы с кодировкой
Проблемы с кодировкой возникают, если кодировка VS Code в целом или вашего файла скрипта не совпадает с кодировкой, ожидаемой в PowerShell. В PowerShell нет способа автоматически определить кодировку файла.
Проблемы с кодировкой более вероятны при использовании символов не из 7-разрядной кодировки ASCII. Пример:
- Расширенные небуквенные символы, такие как длинное тире ( — ), неразрывный пробел ( ) или левая двойная кавычка ( " ).
- Латинские символы с диакритикой ( É , ü )
- Нелатинские символы, такие как кириллица ( Д , Ц )
- Символы иероглифического письма ( 本 , 화 , が ).
Распространенные причины проблем с кодировкой:
- Параметры кодировок по умолчанию VS Code и PowerShell не были изменены. В версиях до PowerShell 5.1 (включительно) кодировка по умолчанию отличается от используемой в VS Code.
- Открыт другой редактор, и файл перезаписан в новой кодировке. Это часто происходит с интегрированной средой сценариев.
- Файл возвращается в систему управления версиями в кодировке, отличающейся от той, которая ожидается в VS Code или PowerShell. Это может произойти, когда участники совместной работы используют редакторы с различными конфигурациями кодировок.
Среды других участников
Настроив систему управления версиями, убедитесь также, что параметры других участников, работающих над теми файлами, к которым вы предоставляете общий доступ, не переопределяют кодировку путем повторного кодирования файлов PowerShell.
Как писать кириллицей в C++?
Для чего нужна кодировка текста?
Нужна она для того, чтобы текстовую информацию преобразовывать в биты данных и передавать, например, через Интернет. Собственно, основные параметры, которыми различаются кодировки — это количество байтов и набор спец. символов, в которые преобразуется каждый символ исходного текста.
Как сменить кодировку на UTF-8?
Другие программы
Все другие программы, которые считывают или записывают скрипты PowerShell, могут перекодировать их.
- Использование буфера обмена для копирования и вставки скрипта. Такое часто встречается в следующих случаях:
- Копирование скрипта в виртуальную машину.
- Копирование скрипта из электронной почты или с веб-страницы.
- Копирование скрипта через документ Microsoft Word или PowerPoint.
- Блокнот;
- vim;
- любой другой редактор скриптов PowerShell.
- Get-Content / Set-Content / Out-File
- Операторы перенаправления PowerShell, такие как > и >> .
- sed / awk
- Веб-браузер при скачивании скриптов.
- Общий файловый ресурс.
Некоторые из этих средств работают с байтами, а не с текстом, но другие позволяют настраивать кодировки. В случаях, когда необходимо настроить кодировку, используйте те же параметры, что и в вашем редакторе, чтобы предотвратить возникновение проблем.
Открытие файла с кодировкой, не являющегося частью проекта
В меню Файл наведите указатель мыши на пункт Открыть, выберите элемент Файл или Файл из Интернета, а затем выберите нужный файл.
Настройка VS Code
Кодировка VS Code по умолчанию — UTF-8 без метки порядка байтов.
Чтобы задать Кодировка в VS Code, перейдите к параметрам VS Code ( CTRL + , ) и задайте параметр "files.encoding" :
Возможны следующие значения:
- utf8 : [UTF-8] без метки порядка байтов
- utf8bom : [UTF-8] с меткой порядка байтов
- utf16le : [UTF-16] с прямым порядком байтов
- utf16be : [UTF-16] с обратным порядком байтов
- windows1252 : [Windows-1252]
Должен отобразиться раскрывающийся список представления графического пользовательского интерфейса или дополнение в представлении JSON.
Чтобы обеспечить автоматическое определение кодировки, если это возможно, можно также добавить следующее:
Если вы не хотите, чтобы эти параметры влияли на все типы файлов, в VS Code можно задавать конфигурации для каждого языка отдельно. Создать параметр для конкретного языка можно, поместив параметры в поле [] . Пример:
Вы также можете установить средство отслеживания Gremlins для Visual Studio Code. Это расширение раскрывает определенные символы Юникода, которые могут быть легко повреждены из-за своей невидимости или схожести с другими обычными символами.
Как в С ++ писать на русском?
C++: Русский язык в консоли
Открытие файла с кодировкой, являющегося частью проекта
В обозревателе решений щелкните файл правой кнопкой мыши и выберите команду Открыть с помощью.
В диалоговом окне Открыть с помощью выберите редактор для открытия файла.
Многие редакторы Visual Studio, такие как редактор форм, автоматически определяют кодировку и открывают файл соответствующим образом. Если вы воспользовались редактором, который позволяет указать кодировку, появляется диалоговое окно Кодировка.
В диалоговом окне Кодировка выберите кодировку, которую должен использовать редактор.
Существующие скрипты
Скрипты, которые уже находятся в файловой системе, могут нуждаться в повторном кодировании в указанную вами кодировку. В нижней строке VS Code вы увидите метку UTF-8. Щелкните ее, чтобы открыть панель действий, и выберите команду Сохранить с кодировкой. Теперь вы можете выбрать новую кодировку для этого файла. Подробные инструкции см. в разделе Кодировка в VS Code.
Если вам нужно повторно кодировать несколько файлов, можно использовать следующий скрипт:
Как изменить кодировку текста на юникод?
Как установить стандартную кодировку в Visual Studio
Я ищу способ настроить Visual Studio, чтобы он всегда сохранял мои файлы в UTF-8.
Я нашел только варианты, чтобы расширить этот проект. Есть ли способ установить его в Visual Studio?
Вы хотите, чтобы файлы сохранялись как UTF-8, потому что вы используете специальные символы, которые будут потеряны при кодировке ASCII? Если это так, то есть глобальная настройка VS2008 с Tools > Options > Environment > Documents именем Save documents as Unicode when data cannot be saved in codepage . Когда этот параметр включен, VS2008 будет сохранять как Unicode, если определенные символы не могут быть представлены в кодовой странице по умолчанию.
Кроме того, какие файлы не сохраняются как UTF-8? Все мои .cs, .csproj, .sln, .config, .as * x и т.д. по умолчанию сохраняются как UTF-8 (с подписью, отметками порядка байтов).
Какая кодировка в C++?
В C++-коде для Windows часто требуется преобразовывать строки между кодировками UTF-8 и UTF-16, так как Win32-функции с поддержкой Unicode используют UTF-16 в качестве “родной” Unicode-кодировки.
Для чего нужна кодировка UTF-8?
Взаимодействие расширения PowerShell для VS Code с кодировками
Расширение PowerShell взаимодействует со скриптами несколькими способами:
- При изменении скриптов в VS Code содержимое отправляется из VS Code в расширение. Протокол языкового сервера требует, чтобы это содержимое передавалось в UTF-8. Таким образом, расширение не сможет получить неправильную кодировку.
- При выполнении скриптов в интегрированной консоли они считываются оболочкой PowerShell непосредственно из файла. Если кодировка PowerShell отличается от кодировки VS Code, может произойти сбой.
- Когда скрипт, который открыт в VS Code, ссылается на другой скрипт, который не был открыт в VS Code, расширение загружает содержимое второго скрипта из файловой системы. Расширение PowerShell по умолчанию использует кодировку UTF-8, но при этом применяет обнаружение метки порядка байтов (BOM), чтобы выбрать правильную кодировку.
Проблема возникает при предположении кодировки, не использующей BOM (такой как UTF-8 без метки порядка байтов или Windows-1252). Расширение PowerShell по умолчанию использует UTF-8. Расширение не может изменить параметры кодировки в VS Code. Дополнительные сведения см. в разделе Проблема № 824.
Какие
EditorConfig помогает разработчикам определять и поддерживать согласованные стили кодирования для разных редакторов и IDE.
Это также включает кодировку файлов.
EditorConfig по умолчанию встроен в Visual Studio 2017, и у меня были плагины для таких старых версий, как VS2012. Подробнее читайте на странице EditorConfig Visual Studio Plugin .
Вы можете установить файл конфигурации EditorConfig на достаточно высоком уровне в структуре папок, чтобы охватить все предполагаемые репозитории (вплоть до корня диска, если ваши файлы действительно разбросаны повсюду) и настроить параметр charset :
Вы можете добавлять фильтры, исключения и т. Д. На каждом уровне папки или по имени / типу файла, если хотите более точный контроль.
После настройки совместимые IDE должны автоматически делать это, чтобы соответствующие файлы соответствовали установленным правилам. Обратите внимание, что Visual Studio не конвертирует все ваши файлы автоматически, но вносит свой вклад, когда вы работаете с файлами в среде IDE (открывайте и сохраняйте).
Выбор подходящей кодировки
Различные системы и приложения могут использовать различные кодировки:
- В .NET Standard, в Интернете и в среде Linux теперь в основном используется кодировка UTF-8.
- Во многих приложениях .NET Framework используется UTF-16. По историческим причинам ее иногда называют "Юникод"; сейчас этот термин относится к более широкому стандарту, охватывающему UTF-8 и UTF-16.
- В Windows многие приложения, которые были созданы еще до распространения Юникода, по-прежнему могут по умолчанию использовать Windows-1252.
Кодировки Юникода также используют понятие метки порядка следования байтов (BOM). BOM ставится в начале текста, чтобы декодер мог определить, какая кодировка используется в тексте. Для многобайтовых кодировок BOM также указывает порядок следования байтов кодировки. BOM представляются байтами, которые редко встречаются в тексте в Юникоде. Это позволяет сделать обоснованное предположение, что текст записан в Юникоде, если присутствует метка BOM.
BOM не являются обязательными; в мире Linux они не так популярны, поскольку во всех прочих местах используется надежное соглашение UTF-8. Большинство приложений Linux предполагают, что текстовый ввод кодируется в UTF-8. Хотя многие приложения Linux могут распознавать и правильно обрабатывать BOM, некоторые этого не делают, что приводит к появлению артефактов в тексте, открываемом с помощью этих приложений.
Таким образом:
- Если вы работаете в основном с приложениями Windows и Windows PowerShell, следует предпочтительно использовать такие кодировки, как UTF-8 с BOM или UTF-16.
- Если вы работаете на разных платформах, следует отдавать предпочтение UTF-8 с BOM.
- Если вы работаете главным образом в контексте Linux, следует отдавать предпочтение UTF-8 без BOM.
- Windows-1252 и latin-1 — устаревшие кодировки, которых по возможности следует избегать. Тем не менее некоторые приложения предыдущих версий в Windows зависят от их.
- Также стоит отметить, что подписывание скриптов зависит от кодировки, то есть изменение кодировки в подписанном скрипте потребует повторного подписывания.
Как изменить кодировку на своем сайте?
Для этого нужно:
Система управления версиями
Некоторые системы управления версиями, например git, игнорируют кодировки; git отслеживает только байты. Поведение других, например Azure DevOps или Mercurial, может отличаться. Даже некоторые средства, основанные на git, полагаются на декодирование текста.
Если это так, убедитесь, что вы:
- Настроили кодировку в системе управления версиями в соответствии с вашей конфигурацией VS Code.
- Сделали так, что все файлы добавляются в систему управления версиями в соответствующей кодировке.
- Остерегайтесь изменять кодировки, полученные через систему управления версиями. Ключевым признаком здесь будет разностный файл, который указывает, что изменения отсутствуют (так как изменены байты, но не символы).
Что дальше
Хотя у вас может быть настройка для всей Visual Studio, я настоятельно рекомендую по-прежнему включать корень EditorConfig в систему управления версиями вашего решения, чтобы явные настройки также автоматически синхронизировались со всеми членами команды. Корневой файл editorconfig вашего диска может быть запасным вариантом, если в каком-то проекте еще не настроены собственные файлы editorconfig.
При использовании VS Code для создания и редактирования сценариев PowerShell очень важно, чтобы ваши файлы сохранялись в правильной кодировке символов.
Сколько весит 1 символ в UTF-8?
2 либо 4 байта, смотря какой юникод. Текст, состоящий только из символов Юникода с номерами меньше 128, при записи в UTF-8 превращается в обычный текст ASCII. И наоборот, в тексте UTF-8 любой байт со значением меньше 128 изображает символ ASCII с тем же кодом.
Настройка PowerShell
В PowerShell кодировка по умолчанию зависит от версии:
- В PowerShell 6+ кодировка по умолчанию на всех платформах — UTF-8 без метки порядка байтов.
- В Windows PowerShell кодировка по умолчанию — обычно Windows-1252, расширение latin-1, которое также называется ISO 8859-1.
В PowerShell 5 + можно определить кодировку по умолчанию так:
Следующий скрипт может использоваться для определения кодировки, которую ваш сеанс PowerShell выводит для скрипта, где нет метки порядка байтов.
Можно настроить PowerShell так, чтобы использовать заданную кодировку в более общем виде с помощью параметров профиля. См. следующие статьи:
Заставить PowerShell использовать конкретную кодировку для входных данных невозможно. В PowerShell 5.1 и более ранних версий в Windows с языковым стандартом en-US по умолчанию используется кодировка Windows-1252, если отсутствует метка порядка байтов. Другие параметры языкового стандарта могут использовать другую кодировку. Для обеспечения совместимости лучше сохранять скрипты в Юникоде с меткой порядка байтов.
Любые другие имеющиеся у вас инструменты для работы со скриптами PowerShell могут зависеть от выбранных параметров кодировки или преобразовывать скрипты в другую кодировку.
Как определить наличие проблемы с кодировкой
Часто ошибки кодирования в скриптах представляются как ошибки синтаксического анализа. Если вы видите странные последовательности символов в скрипте, это может быть проблемой. В примере ниже тире ( – ) отображается в виде символов â€" :
Эта проблема возникает, так как VS Code кодирует символ – в UTF-8 как байты 0xE2 0x80 0x93 . Если эти байты декодируются в кодировке Windows-1252, они интерпретируются как символы â€" .
Некоторые странные последовательности символов, которые можно видеть:
- â€" вместо – .
- â€" вместо — .
- Ä2 вместо Ä .
- Â вместо (неразрывный пробел);
- é вместо é .
Этот удобный справочник перечисляет распространенные шаблоны, которые указывают на проблему между кодировками UTF-8 и Windows-1252.
Практическое руководство. Сохранение и открытие файлов с использованием определенной кодировки
Вы можете сохранять файлы с определенной кодировкой для поддержки языков с двунаправленным письмом. Можно также указать кодировку при открытии файла, чтобы система Visual Studio отобразила его правильно.
Сохранение файла с кодировкой
В меню Файл выберите Сохранить файл как и затем нажмите кнопку раскрывающегося списка рядом с кнопкой Сохранить.
Откроется диалоговое окно Дополнительные параметры сохранения.
В разделе Кодировка выберите нужную кодировку для файла.
При необходимости в разделе Завершение строк выберите формат для знаков конца строки.
Этот параметр полезен, если предполагается обмениваться файлами с пользователями, работающими в другой операционной системе.
Если вы хотите работать с файлом, имеющим определенную кодировку, можно сообщить Visual Studio использовать эту кодировку при открытии файла. Конкретный метод зависит от того, является ли файл частью проекта.
Чтобы сохранить файл проекта с кодировкой, необходимо выгрузить проект. Только после этого станет доступна команда Сохранить файл как.
Другие ресурсы о кодировках в PowerShell
Существует несколько других достойных публикаций на тему кодировок и настройки кодирования в PowerShell:
Имеются txt файлы с русским текстом, который был сохранен на русской системе
в ANSI.
Проблема в том что на японской версии ОС, такие файлы отображают сломанную кодировку.
Я пробовал переконвертировать в кучу разных кодировок, но результата нет.
Единственный выход прочитать файл, это поменять язык юникода на русский.
(программы не поддерживающие юникод, в настройках системы)
Но в таком случае, многие программы, даже которые все поддерживают
и по умолчанию имеют правильный язык, почему-то считают настройку юникода
как за настройку языка или страны, хотя они не изменены, и русифицируются.
Что не подходит.
Как я могу прочитать, или хотябы переконвертировать такие файлы, не изменяя юникода и языка системы?Эта цепочка заблокирована. Вы можете просмотреть вопрос или оставить свой голос, если сведения окажутся полезными, но вы не можете написать ответ в этой цепочке.
Оскорбление — это любое поведение, которое беспокоит или расстраивает человека или группу лиц. К угрозам относятся любые угрозы самоубийством, насилием, нанесением ущерба и др. Любое содержимое для взрослых или недопустимое на веб-сайте сообщества. Любое изображение, обсуждение наготы или ссылка на подобные материалы. Оскорбительное, грубое или вульгарное поведение и другие проявления неуважения. Любое поведение, нарушающее лицензионные соглашения, в том числе предоставление ключей продуктов или ссылок на пиратское ПО. Незатребованная массовая рассылка или реклама. Любые ссылки или пропаганда сайтов с вирусным, шпионским, вредоносным или фишинговым ПО. Любое другое неуместное содержимое или поведение в соответствии с правилами использования и кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другими вариантами оскорбления или эксплуатации детей.
Что такое кодировка ANSI?
Чем Unicode отличается от UTF-8?
Какая кодировка в PowerShell?
Интегрированная среда сценариев (ISE) PowerShell
При редактировании скриптов с помощью интегрированной среды сценариев PowerShell необходимо синхронизировать здесь параметры кодировки.
Интегрированная среда сценариев должна учитывать метку порядка байтов, но можно также использовать отражение для задания кодировки. Обратите внимание, что это значение не сохраняется между запусками.
Ответы (7)
Но в таком случае, многие программы, даже которые все поддерживают
и по умолчанию имеют правильный язык, почему-то считают настройку юникода
как за настройку языка или страны, хотя они не изменены, и русифицируются.
Что не подходит.Если программы считывают установленный язык автоматически из системы и не имеют собственной настройки кодировок, то с этим ничего не поделать. Разве что, обратиться к их разработчикам и попросить другую версию с расширенными настройками.
Проще конвертировать исходный текст в юникод. Собственно, он и был придуман для решения этой проблемы.
Можно использовать разные программы. Рекламировать сторонние продукты не будем. Если в системе ничего нет, кроме программ, установленных по умолчанию, то простой текстовый файл можно сконвертировать с помощью Internet Explorer.
Откройте файл в IE, указав в адресной строке полный путь до файла (имя с расширением). Например:
В меню -- вид -- кодировка -- (дополнительно) выберите нужную кодировку, чтобы файл читался. Возможно, нужная (кириллица-DOS) установится автоматически и нажимать ничего не надо.
Затем нажмите "файл" -- "сохранить как". Выберите другой путь для сохранения, чтобы не изменять оригинал. Выберите кодировку для сохранения нажмите "сохранить":
Если необходимая программа не может понять юникодные символы, то попробуйте сохранить в японских кодировках.
Оскорбление — это любое поведение, которое беспокоит или расстраивает человека или группу лиц. К угрозам относятся любые угрозы самоубийством, насилием, нанесением ущерба и др. Любое содержимое для взрослых или недопустимое на веб-сайте сообщества. Любое изображение, обсуждение наготы или ссылка на подобные материалы. Оскорбительное, грубое или вульгарное поведение и другие проявления неуважения. Любое поведение, нарушающее лицензионные соглашения, в том числе предоставление ключей продуктов или ссылок на пиратское ПО. Незатребованная массовая рассылка или реклама. Любые ссылки или пропаганда сайтов с вирусным, шпионским, вредоносным или фишинговым ПО. Любое другое неуместное содержимое или поведение в соответствии с правилами использования и кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другими вариантами оскорбления или эксплуатации детей.
Был ли этот ответ полезным?
К сожалению, это не помогло.
Отлично! Благодарим за отзыв.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв, он поможет улучшить наш сайт.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв.
Читайте пожалуйста внимательно что я пишу!
"Я пробовал переконвертировать в кучу разных кодировок, но результата нет."не переконвертируется файл ничем, ни браузерами не программами, не самим блокнотом.
он просто меняет кодировку и получаются другие символы, и не более.
единственное что некоторый текст переводится правильно, но только некоторые слова или буквы.
Оскорбление — это любое поведение, которое беспокоит или расстраивает человека или группу лиц. К угрозам относятся любые угрозы самоубийством, насилием, нанесением ущерба и др. Любое содержимое для взрослых или недопустимое на веб-сайте сообщества. Любое изображение, обсуждение наготы или ссылка на подобные материалы. Оскорбительное, грубое или вульгарное поведение и другие проявления неуважения. Любое поведение, нарушающее лицензионные соглашения, в том числе предоставление ключей продуктов или ссылок на пиратское ПО. Незатребованная массовая рассылка или реклама. Любые ссылки или пропаганда сайтов с вирусным, шпионским, вредоносным или фишинговым ПО. Любое другое неуместное содержимое или поведение в соответствии с правилами использования и кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другими вариантами оскорбления или эксплуатации детей.
Был ли этот ответ полезным?
К сожалению, это не помогло.
Отлично! Благодарим за отзыв.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв, он поможет улучшить наш сайт.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв.
Надо было сразу написать о том, что текст читается частично. В какой кодировке появляются правильные фразы? Возможно, что необходимая Вам программа понимает не UTF-8, а более экзотические варианты.
Оскорбление — это любое поведение, которое беспокоит или расстраивает человека или группу лиц. К угрозам относятся любые угрозы самоубийством, насилием, нанесением ущерба и др. Любое содержимое для взрослых или недопустимое на веб-сайте сообщества. Любое изображение, обсуждение наготы или ссылка на подобные материалы. Оскорбительное, грубое или вульгарное поведение и другие проявления неуважения. Любое поведение, нарушающее лицензионные соглашения, в том числе предоставление ключей продуктов или ссылок на пиратское ПО. Незатребованная массовая рассылка или реклама. Любые ссылки или пропаганда сайтов с вирусным, шпионским, вредоносным или фишинговым ПО. Любое другое неуместное содержимое или поведение в соответствии с правилами использования и кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другими вариантами оскорбления или эксплуатации детей.
Был ли этот ответ полезным?
К сожалению, это не помогло.
Отлично! Благодарим за отзыв.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв, он поможет улучшить наш сайт.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв.
текст не читается частично.
А после конвертации проявляется частично. но частично это назвать сложно..больших файлов у меня нет, но одно слово иногда проявляется правильно.
Да и программа мне никакая не нужна..написано же, txt обычный блокнот.
Если вы настолько не понимаете что я написал, создайте файл любой и сохраните в ANSI.
потом зайдите в настройки и выставите программы не поддерживающие юникод - японский.
и только, страну и язык системы менять не нужно. и откройте этот файл..увидите о чем речь.
ничто его больше не сможет прочесть, сколько не конвертируй, только вернуть в настройки русский..но в таком случае как я уже сказал, некоторые программы считают это за страну/язык системы и переводятся, а мне это не нужно, мне нужно прочесть файлы и все!
Оскорбление — это любое поведение, которое беспокоит или расстраивает человека или группу лиц. К угрозам относятся любые угрозы самоубийством, насилием, нанесением ущерба и др. Любое содержимое для взрослых или недопустимое на веб-сайте сообщества. Любое изображение, обсуждение наготы или ссылка на подобные материалы. Оскорбительное, грубое или вульгарное поведение и другие проявления неуважения. Любое поведение, нарушающее лицензионные соглашения, в том числе предоставление ключей продуктов или ссылок на пиратское ПО. Незатребованная массовая рассылка или реклама. Любые ссылки или пропаганда сайтов с вирусным, шпионским, вредоносным или фишинговым ПО. Любое другое неуместное содержимое или поведение в соответствии с правилами использования и кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другими вариантами оскорбления или эксплуатации детей.
Был ли этот ответ полезным?
К сожалению, это не помогло.
Отлично! Благодарим за отзыв.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв, он поможет улучшить наш сайт.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв.
Вы пытаетесь открыть файлы в блокноте? Естественно, ничего не получится.
Создаём тестовый файл в кодировке 866 (Кириллица в DOS). (ANSI вообще не содержит русских символов, а может быть у Вас это не ANSI, а KOI-7 или KOI-8, которая лишь частично совместима с ней?)
Открывая его в блокноте в Windows с русским языком по умолчанию, Вы увидите кракозябры, так как русская кодировка в Windows не совпадает с DOS.
Текстовая строка - это строка байтов (чисел), сам он не изменяется, но система пытается по-разному представить этот поток, в зависимости от языковых установок.
Если установить английский, то представление изменилось:
Если японский, то система пытается прочесть тект так, как будто он японский:
Если же открыть текст в браузере, то текст читается. В моём случае браузер сам определил правильную кодировку, хотя текст короткий (неюникодный язык по прежнему установлен японский):
Здесь я должен заметить, что первоначальный язык системы - русский и установлена самая последняя версия Framework. И да, это может повлиять на обработку.
Вам же предлагаю сделать следующее:
Чтобы не зависеть от языковых установок сконвертировать файлы в юникод. Откройте их там, где Вы можете прочитать правильно и сохраните их новые копии в юникодном формате. Учтите, что блокнот (notepad) юникода не понимает и текст будет искажён. Сохранить файлы нужно как документ Office, RTF или HTML, в зависимости от Ваших возможностей. Конечно, это имеет смысл, если число документов ограничено. Напишите, что получается, можете ли Вы вообще прочесть эти файлы в каком нибудь из режимов?
Оскорбление — это любое поведение, которое беспокоит или расстраивает человека или группу лиц. К угрозам относятся любые угрозы самоубийством, насилием, нанесением ущерба и др. Любое содержимое для взрослых или недопустимое на веб-сайте сообщества. Любое изображение, обсуждение наготы или ссылка на подобные материалы. Оскорбительное, грубое или вульгарное поведение и другие проявления неуважения. Любое поведение, нарушающее лицензионные соглашения, в том числе предоставление ключей продуктов или ссылок на пиратское ПО. Незатребованная массовая рассылка или реклама. Любые ссылки или пропаганда сайтов с вирусным, шпионским, вредоносным или фишинговым ПО. Любое другое неуместное содержимое или поведение в соответствии с правилами использования и кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другими вариантами оскорбления или эксплуатации детей.
Был ли этот ответ полезным?
К сожалению, это не помогло.
Отлично! Благодарим за отзыв.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв, он поможет улучшить наш сайт.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв.
Вы полностью игнорируете то что я написал..
Я не раз уже написал что я конвертировал текст и прочее..А вы все продолжаете вырывать фразы из общего смысла.
Я даже написал в заголовке что случай не типичный. +обьяснения, должно как минимум было сложится впечатление что понимание вопроса имеется.Хотел выложить скринами, но сейчас повторил тест, но все конвертируется в кирилик(виндоус).
почему же конкретно тот файл с которым я кучу времени переводил его не конвертировался вопрос..
хотелось бы конечно скинуть имеено тот файл на разбор, возможно он был как-то частично поврежден, хоть и читался нормально с рус.юникодом..
но наглый нотепад++ при смене кодировки заменил файл без спроса и в онлайн режиме, т.е. еще даже до закрытия..Если же все-таки тот файл был не поврежден как-то, и я опять встречу подобный кейс, выложу сюда файл..
хотя надеюсь этого не случится. собственно поэтому и написано что не тепичный случай.
а вам спасибо конечно за труд, но постарайтесь в следующий раз не вырывать фразы из контекста..а то получается вроде как и ответили, а вроде и не втему.Оскорбление — это любое поведение, которое беспокоит или расстраивает человека или группу лиц. К угрозам относятся любые угрозы самоубийством, насилием, нанесением ущерба и др. Любое содержимое для взрослых или недопустимое на веб-сайте сообщества. Любое изображение, обсуждение наготы или ссылка на подобные материалы. Оскорбительное, грубое или вульгарное поведение и другие проявления неуважения. Любое поведение, нарушающее лицензионные соглашения, в том числе предоставление ключей продуктов или ссылок на пиратское ПО. Незатребованная массовая рассылка или реклама. Любые ссылки или пропаганда сайтов с вирусным, шпионским, вредоносным или фишинговым ПО. Любое другое неуместное содержимое или поведение в соответствии с правилами использования и кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другими вариантами оскорбления или эксплуатации детей.
Помогите, пожалуйста, разобраться:
UTF-8 и UTF-8 без BOM - в чём разница в использовании? Что лучше использовать для сохранения файлов?Когда-то у меня сложилось впечатление, что UTF-8 универсальнее, лучше использовать эту кодировку - тогда я имел дело с HTML, CSS +/- JavaScript, но позднее - имея дело с PHP - получил опыт, говорящий, что UTF-8 без BOM предпочтительнее (были проблемы, как раз, из-за UTF-8)
Так, как всё-таки быть? Что использовать?
Мой опыт пока такой: для клиентской части - UTF-8 (либо нет разницы), для серверной - UTF-8 без BOM - всё так? Почему?
Различий никаких нет, кроме наличия/отсутствия маркера. Кодировка одна и та же - utf-8. По стандарту unicode маркер должен быть.
Удалять маркер BOM при сохранении нужно только для PHP, который почему-то не умеет корректно обрабатывать нормальные unicode файлы.
Маркер последовательности байтов или метка порядка байтов (англ. Byte Order Mark (BOM)) — Юникод-символ, используемый для индикации порядка байтов текстового файла. Его кодовый символ U+FEFF. По спецификации, его использование не является обязательным, однако, если маркер последовательности байтов используется, то он должен быть установлен в начале текстового файла. Помимо своего конкретного использования в качестве указателя порядка байтов, символ может также указать, какой кодировкой Unicode закодирован текст.
Кодировка Unicode может использовать 16-разрядные или 32-разрядные числа и приложение должно знать, как дальше с ними поступать. Поэтому потребность в маркере последовательности байтов возникает при обмене документами.
Если сохраняете php файл - то без BOM, в остальном же разницы никакой не имеет.
Сигнатура (BOM) нужна для UTF16, для UTF8 - не только не нужно, но и настоятельно не рекомендована стандартом.
А можно ссылку на источник?
Не нашел я, чтобы сигнатура UTF-8 настоятельно не рекомендовалась стандартом.
Да, в данном случае она не определяет порядок байт в потоке, но может быть использована как индикатор того, что данный файл записан в UTF-8.
А не использовать ее рекомендуют из соображений совместимости со старыми программами.Первоисточник, собственно
Если быть совсем педантом, то использовать BOM в utf8 можно, только смысла в этом нет, а в некоторых случаях создаёт проблемы.Если быть совсем педантом, то использовать BOM в utf8 можно, только смысла в этом нет, а в некоторых случаях создаёт проблемы.
Не, я не педант - мне истина дороже
Я имел в виду, что в стандарте нет настоятельных рекомендаций не использовать BOM для UTF-8.И позволю себе не согласиться с вами - смысл есть (как индикатор - тот же листер корректно покажет файл), а проблемы возникают в основном с теми приложениями, которые не поддерживают обработку текста в этой кодировке.
А применительно к логу КуреНета, а не вижу принципиальных причин не использовать сигнатуру.
Я имел в виду, что в стандарте нет настоятельных рекомендаций не использовать BOM для UTF-8.
Но там есть описание проблем, которые возникают если использовать BOM. Начиная от неправильного формирования самой сигнатуры и заканчивая появлением её в странных местах после, например, слияния текстовых потоков.
С учётом того, что "какой, нафик, порядок байт в utf8?!" - лучше, всё-таки, не использовать.И позволю себе не согласиться с вами - смысл есть (как индикатор - тот же листер корректно покажет файл)
Это проблемы листера. Обнаружение utf8 не сложнее, чем автоопределение OEM/ANSI
а проблемы возникают в основном с теми приложениями, которые не поддерживают обработку текста в этой кодировке.
Вот как раз у приложений, работающих с utf8 проблемы и возникают - если "нуль-пробел" не должен появляться в текстовом потоке, то приложение имеет полное право ругаться на недопустимый символ.
А применительно к логу КуреНета, а не вижу принципиальных причин не использовать сигнатуру.
Точно также нет и принципиальных причин использовать BOM для utf8 в логе CureNet-а
Но там есть описание проблем, которые возникают если использовать BOM
Описание проблем != рекомендация не использовать
Начиная от неправильного формирования самой сигнатуры и заканчивая появлением её в странных местах после, например, слияния текстовых потоков
Это уже детали реализации. Опять же, проблемы могут быть и при обработке UTF-8 без сигнатуры.
С учётом того, что "какой, нафик, порядок байт в utf8?!" - лучше, всё-таки, не использовать
В качестве Вашего IMHO это звучит корректней, чем "(с) unicode.org" IMHO
Это проблемы листера. Обнаружение utf8 не сложнее, чем автоопределение OEM/ANSI
Хм, а UTF-16 тоже не проблема автоопределить. Ну а зачем тогда для него сигнатура?
Вот как раз у приложений, работающих с utf8 проблемы и возникают - если "нуль-пробел" не должен появляться в текстовом потоке, то приложение имеет полное право ругаться на недопустимый символ
У приложений, которые рассчитаны на работу с UTF-8, не может быть ситуации "нуль-пробел не должен появляться в текстовом потоке"
З.Ы. Мои посты можно перенести в другую тему, а то оффтоп страшный.
the Spirit of the Enlightenment
Ну в таком случае, хоть бы сигнатуру записали в начале
Сигнатура (BOM) нужна для UTF16, для UTF8 - не только не нужна, но и настоятельно не рекомендована стандартом.
жаль, что notepad не читал стандартов
Это проблемы листера. Обнаружение utf8 не сложнее, чем автоопределение OEM/ANSI
B(yte)O(rder)M(ark) это способ отличить, грубо говоря, интелей от мотороллеров, а совсем не признак юникодности.
B(yte)O(rder)M(ark) это способ отличить, грубо говоря, интелей от мотороллеров, а совсем не признак юникодности
A BOM is useful at the beginning of files that are typed as text, but for which it is not known whether they are in big or little endian format—it can also serve as a hint indicating that the file is in Unicode, as opposed to in a legacy encoding and furthermore, it act as a signature for the specific encoding form used
A BOM is useful at the beginning of files that are typed as text, but for which it is not known whether they are in big or little endian format—it can also serve as a hint indicating that the file is in Unicode, as opposed to in a legacy encoding and furthermore, it act as a signature for the specific encoding form used
Изначально utf8 был придуман именно для того, чтобы приложение, которые умеют работать с восьмибитными символами, но не знают юникода не ломались в простейших ситуациях типа прочитать строку/разбить строку на слова/пути - на элементы и т.п.
Фактически, это безопасный транспорт для юникода. Если проводить аналогии, то utf8 удачно сочетает достоинства quote printable (читабильные символы из первой половины ASCII) и base64 (компактность и регулярное представление).
При отсутствии BOM с текстовыми файлами, содержаими utf8 можно вполне безопасно делать массу операций - "резать" на строки и слова, объединять, сортировать с учётом "регистра", передавать между разными системами и системами с разными языками и т.д. и т.п.
Наличие BOM в (начале) utf8 потока эти операции затрудняет, т.к. нужно предусматривать ситуации "надо вырезать BOM из исходных данных и вставить в конечные".
Ещё один аргумент. Если используется utf8 без BOM, то текстовый поток, состоящий и символов исключительно первой половины ASCII остаётся обычным US ASCII без трёх странных байт в начале. При том, что поток может формироваться потоком и априори неизвестно, будут ли в нём U+0256 и старше, такая обратная совместимость заслуживает того, чтобы её соблюдать.P.S. Было время, когда и я считал, что UCS2 - рулез полный, но проблема в том, что даже в рамках B(ase)M(ap)P(plane) (если правильно помню аббревиатуру и расшифровку) есть составные символы. А это разрушает идиллию "один код - один символ".
Как изменить кодировку в Excel на UTF-8?
Кликните Файл > Сохранить как (File > Save as), введите имя для файла и в выпадающем списке Кодировка (Encoding) выберите UTF-8. Затем нажмите кнопку Сохранить (Save).
Читайте также: