Отображается как windows 1252

Обновлено: 04.07.2024

Я скопировал определенные файлы с машины Windows на машину Linux. Таким образом, все файлы с кодировкой Windows (windows-1252) должны быть преобразованы в UTF-8. Файлы, которые уже находятся в UTF-8 не должны быть изменены. Я планирую использовать recode утилита для этого. Как я могу указать, что recode утилита должна конвертировать только файлы в кодировке windows-1252, а не файлы UTF-8?

пример использования recode:

это будет конвертировать myfile.txt от windows-1252 для UTF-8. Прежде чем сделать это, я хотел бы знать, что myfile.txt на самом деле кодируется windows-1252, а не UTF-8. В противном случае, я считаю, что это повредит файл.

Как вы ожидаете, что recode узнает, что файл Windows-1252? Теоретически, я верю любой файл является допустимым файлом Windows-1252, поскольку он отображает каждый возможный байт на символ.

одним из вариантов было бы определить, действительно ли это полностью действительный файл UTF-8 во-первых, я полагаю. опять же, это только наводит на размышления.

Я не знаком с самим инструментом перекодирования, но вы можете захотеть увидеть, способен ли он перекодировать файл из и в же encoding-если вы сделаете это с недопустимым файлом (т. е. тем, который содержит недопустимые последовательности байтов UTF-8), он вполне может преобразовать недопустимые последовательности в вопросительные знаки или что-то подобное. В этот момент Вы можете обнаружить, что файл действителен UTF-8, перекодировав его в UTF-8 и проверка идентичности входных и выходных данных.

просто повторю: все это эвристика. Если вы действительно не знаете кодировку файла, ничто не скажет вам об этом со 100% точностью.

вы можете использовать функцию iconv:

iconv -f WINDOWS-1252 -t UTF-8 filename.txt

нет общего способа узнать, закодирован ли файл с определенной кодировкой. Помните, что кодировка-это не что иное, как" соглашение " о том, как биты в файле должны быть сопоставлены с символами.

Если вы не знаете, какие из ваших файлов на самом деле уже закодированы в UTF-8 и какие из них закодированы в windows-1252, вам придется проверить все файлы и выяснить это самостоятельно. В худшем случае это может означать, что вы должны открыть каждый из них с любым из две кодировки и посмотреть, правильно ли они" выглядят " - т. е. все символы отображаются правильно. Конечно, вы можете использовать поддержку инструментов для этого, например, если вы точно знаете, что определенные символы содержатся в файлах, которые имеют другое сопоставление в windows-1252 против UTF-8, вы можете grep для них после запуска файлов через "iconv", как упоминал Сева Акексеев.

еще один счастливый случай для вас будет, если вы знаете, что файлы на самом деле содержат только символы, которые кодируются одинаково как в UTF-8, так и в windows-1252. В таком случае, конечно, вы уже закончили.

вот транскрипция другого ответа, который я дал на аналогичный вопрос:

если вы примените utf8_encode () к уже строке UTF8, он вернет искаженный вывод UTF8.

Я сделал функцию, которая решает все эти вопросы. Его называют кодировкой:: toUTF8 ().

Я сделал это, потому что служба давала мне поток данных, все перепуталось, смешивая UTF8 и Latin1 в одной строке.

Update: я преобразовал функцию (forceUTF8) в семейство статических функций в классе под названием Encoding. Новая функция-кодировка:: toUTF8 ().

чтобы убедиться, что файл находится в Windows-1252, откройте его в блокноте (под Windows) и нажмите кнопку Сохранить как. Блокнот предлагает текущую кодировку по умолчанию; если это Windows-1252 (или любая 1-байтовая кодовая страница, если на то пошло), он сказал бы "ANSI".

Если вы хотите переименовать несколько файлов в одной команде-предположим, вы хотите преобразовать все *.txt files-вот команда:

Если вы уверены, что ваши файлы UTF-8 или Windows 1252 (или Latin1), вы можете воспользоваться тем, что recode выйдет с ошибкой, если вы попытаетесь преобразовать недопустимый файл.

в то время как utf8 является допустимым Win-1252, обратное неверно: win-1252 не является допустимым UTF-8. Итак:

выплюнет ошибки для всех файлов cp1252, а затем продолжит их преобразование в UTF8.

Я бы обернул это в более чистый скрипт bash, сохраняя резервную копию каждого преобразованный файл.

прежде чем выполнять преобразование кодировок, вы можете сначала убедиться, что у вас есть согласованные окончания строк во всех файлах. В противном случае recode будет жаловаться из-за этого и может конвертировать файлы, которые уже были UTF8, но просто имели неправильные окончания строк.

вы можете изменить кодировку файла с помощью редактора, такого как notepad++. Просто перейдите к кодировке и выберите то, что вы хотите.

Я всегда предпочитаю Windows 1252

преобразование файла ASCII (Windows1252) в текстовый файл Unicode (UCS-2 le):

метод выше (на основе сценария Карлоса М.) сначала создает файл с меткой порядка байтов (BOM), а затем добавляет содержимое исходного файла. CHCP используется для обеспечения выполнения сеанса с кодовой страницей Windows1252, чтобы символы 0xFF и 0xFE (ÿþ) интерпретировались правильно.

UTF-8 не имеет спецификации, поскольку она является как излишней, так и недействительной. Где BOM полезен в UTF-16, который может быть заменен байтом, как в случае Microsoft. UTF-16 если для внутреннего представления в буфере памяти. Использовать UTF-8 для обмена. По умолчанию и UTF-8, и все остальное, производное от US-ASCII и UTF-16, являются естественным/сетевым порядком байтов. Microsoft UTF-16 требует спецификации, так как она заменяется байтами.

для covert Windows-1252 в ISO8859-15, сначала я конвертирую ISO8859-1 в US-ASCII для кодов с похожими символами. Затем я преобразую Windows-1252 до ISO8859-15, другие символы, отличные от ISO8859-15, в несколько символов US-ASCII.

Мне каждый раз задают один и тот же вопрос, спрашивают об одном и том же: «Как перекодировать кракозябры из базы данных, хранящей строки в кодировке latin1 в нормальную кириллицу (windows-1251) или utf-8».

Ниже я постараюсь наиболее полно ответить на данный вопрос, а также приведу кусок кода на PHP, который однозначно решает проблему.

Во-первых, я никому не рекомендую продолжать работать в кодировке windows-1251. Эта однобайтовая кодировка уже не удовлетворяет требованиям современности. Поскорее переводите все проекты на utf-8. Чем быстрее это будет сделано, тем быстрее пропадут у вас проблемы с кракозябрами.

Теперь о latin1. Эта кодировка (также известна как windows-1252) повсеместно использовалась ранее в MySQL вплоть до версии 4. Символьная таблица кириллических букв находится в ней на месте арабских символов. Но поскольку она тоже однобайтовая, то при чтении данных в этой кодировке из этой таблицы и выводе их как windows-1251 не возникает никаких проблем, ведь коды в итоге те же самые (0xA0-0xFF). Но всё это будет работать только до тех пор, пока вы не установите MySQL 5+, работающий по дефолту в utf-8.

Первое, что делает программист — он пытается изменить кодировку таблицы latin1 на windows-1251 в phpMyAdmin. Но MySQL этого сделать не может (о чём он и пишет), ведь в кодировке windows-1251 нет соответствующих арабских символов. Второе, что приходит в голову — сконвертировать эту таблицу в utf-8. И это получается. Только вот тексты по-прежнему отображаются кракозябрами.

Как же быть? Как решить эту проблему ?

Решение тут довольно простое, но чтобы к нему прийти самостоятельно, надо чётко понимать — что такое кодировки и как они работают. В понимании поможет моя hand-made диаграмма.

image

А вот и алгоритм, которым я пользуюсь, чтобы привести кодировки в порядок.

  1. Перевожу все таблицы БД в кодировку utf-8. При этом якобы кириллические символы, хранящиеся в кодировке latin1, а поэтому на самом деле являющиеся арабскими, переводятся в utf-8 и занимают свои законные места в диапазоне кодов utf-8, предназначенном для арабских символов.
  2. Пишу микроутилиту на PHP, которая делает следующее с каждой символьной строкой:
    • а) Переводит строку в кодировку windows-1252. Тут проблем быть не должно. Тем самым арабские буквы занимают диапазон кодов A0-FF.
    • б) Переводит полученную однобайтовую строку в utf-8, но уже не как windows-1252, а как windows-1251, т.е. выдавая символы из диапазона A0-FF за кириллические. В итоге символы попадают в utf-8 в тот диапазон кодов, который предназначен для кириллических символов.

  3. Всё, теперь наша строка официально является кириллической строкой в utf-8. Её можно записать обратно в ту же ячейку БД, либо сразу выдать в выходной поток. Однако я всё же рекомендую выполнить однократное полное преобразование БД, и забыть о latin1 как о страшном сне.

Ниже привожу сэмпл кода на PHP, который переводит ФИО пользователей в нормальную кириллическую кодировку.

$q = 'select id, fio from `users`';
$res = mysql_query($q);
while (($row = mysql_fetch_assoc($res)) !== false) // Преобразуем fio из utf-8/latin1 в windows-1252
$s = iconv('utf-8', 'windows-1252', $row['fio']);
// Преобразуем строку из однобайтной кодировки обратно в utf-8, выдав её за windows-1251
$s = iconv('windows-1251', 'utf-8', $s);
// Сохраняем назад в БД
$q = 'update `users` set fio = "'.addslashes($s).'" where id'];
mysql_query($q);
>

Одной из возможных ошибок, с которыми пользователи могут столкнуться поле установки Виндовс 10, являются кракозябры. Они появляются в интерфейсе программ вместо русских букв, могут встречаться в документах. Зачастую кириллица неправильно отображается в изначально англоязычных вариантах и не полностью лицензированных версиях ОС, но случаются и исключения.

Внимание! Мы не несем ответственности за ваши действия. Обратитесь за помощью к профессионалам в сервисный центр, как наш.

Использование региональных стандартов Виндовс 10 и настроек языка для исправления отображения кириллицы

Исправление неправильной кодировки шрифта в Windows 10

  1. Открываем панель управления. Для этого в поиске следует начать набирать «Control Panel» или «Панель управления».
  2. Нужно убедиться, что в разделе «View by» (Просмотр), установлено «Icons» (Значки) и необходимо выбрать «Region» (Региональные стандарты).




После процесса перезагрузки необходимо проверить, решен ли вопрос с отображением в интерфейсе документов и программ русских букв. Обычно после данных простых действий кракозябры будут исправлены.


Изменение кодовых страниц для исправления иероглифов Виндовс 10

Кодовые страницы являются таблицами, в которых определенные символы сопоставляются определенным байтам, а отображение кириллицы в качестве кракозябров в Windows 10 связано с установкой по умолчанию не той кодовой страницы. Это исправляется различными способами, которые будут полезными, когда нужно в параметрах не изменять системный язык.

Редактор реестра

К первому способу относится использование редактора реестра. Это будет наиболее щадящим методом для системы, тем не менее, лучше создать точку восстановления перед началом работы.

  1. Нажимаем клавиши «Win+R», затем следует ввести regedit и подтвердить Enter. Будет открыт реестровый редактор.
  2. Переходим к меню HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage, а в правой части нужно пролистать значения до конца данного раздела.



Зачастую это обеспечивает исправление проблемы с неправильным отображением букв на русском языке. Вариация способа с использованием реестрового редактора (менее предпочтительная) – узнать текущее значение ACP параметра (часто – 1252 для изначально установленной англоязычной системы). Потом в данном разделе нужно отыскать значение параметра 1252 и заменить его с c_1252.nls на такое c_1251.nls.

Изменение на c_1251.nls файла кодовой страницы

Данный способ подойдет для тех пользователей, кто считает вариант с правкой реестра достаточно опасным или сложным. Здесь необходимо осуществить подмену файла кодовой страниц по пути C:\Windows\System32. В данном случае предполагается, что используется кодовая страница западно-европейской версии – 1252. Узнать, какая текущая кодовая страницы, можно с помощью параметра ACP в реестре, аналогично предыдущему способу.

    Переходим по пути C:\Windows\System32, где следует найти файл c_1252.NLS. По нему нужно кликнуть правой кнопкой мыши, чтобы выбрать меню «Свойства» и открыть вкладку «Безопасность». Там нужно нажать на «Дополнительно».






После выполнения перезагрузки компьютера, в Windows 10 кириллица будет отображаться не как кракозяблы, а в виде русских букв.

елена

В программе налогоплательщик юл вместо русских слов кракозябры. все выше изложенные советы не помогают. Налоговая декларация под угрозой. на старом компе все нормально только он перестал подключаться к интернету через модем. ПОМОГИТЕ

Здравсвуйте,как вариант попробуйте перенустоновить программу и поставить более раннию версию программы

Задайте вопрос:


Оплатить картой


Подключиться к WiFi


Удобно припарковаться

Появились кракозябры вместо русских букв в Windows 10

В большинстве случаев проблемы с отображением кириллицы во всей операционной системе Windows 10 или в отдельных программах появляются сразу после ее установки на компьютер. Связана неполадка с неправильно заданными параметрами либо с некорректной работой кодовой страницы. Давайте приступим к рассмотрению двух действенных методов для исправления возникшей ситуации.

Исправляем отображение русских букв в Windows 10

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

Способ 1: Изменение языка системы

В первую очередь хотелось бы отметить такую настройку как «Региональные стандарты». В зависимости от его состояния и производится дальнейшее отображение текста во многих системных и сторонних программах. Редактировать его под русский язык можно следующим образом:

  1. Откройте меню «Пуск» и в строке поиска напечатайте «Панель управления». Кликните на отобразившийся результат, чтобы перейти к этому приложению.

Открыть меню приложения Панель Управления через Пуск в Windows 10

Перейти к настройке региональных стандартов в Windows 10

Открыть дополнительные настройки региональных стандартов в Windows 10

Изменить текущий язык системы Windows 10

Перезагрузить компьютер после изменений Windows 10

Способ 2: Редактирование кодовой страницы

Перед выполнением этого метода настоятельно рекомендуем создать точку восстановления, она поможет вернуть конфигурацию до внесения ваших изменений, если после них что-то пойдет не так. Детальное руководство по данной теме вы найдете в другом нашем материале по ссылке ниже.

  1. Нажатием на комбинацию клавиш Win + R запустите приложение «Выполнить», в строке напечатайте regedit и кликните на «ОК».
  2. В окне редактирования реестра находится множество директорий и параметров. Все они структурированы, а необходимая вам папка расположена по следующему пути:

Найти строковый параметр в редакторе реестра Windows 10

Редактировать параметр ACP в реестре Windows 10

Если же значение и так уже является 1251, следует провести немного другие действия:

Найти 1252 в редакторе реестра Windows 10

Изменить значение 1252 в редакторе реестра Windows 10

После завершения работы с редактором реестра обязательно перезагрузите ПК, чтобы все корректировки вступили в силу.

Подмена кодовой страницы

    Откройте «Этот компьютер» и перейдите по пути C:\Windows\System32 , отыщите в папке файл С_1252.NLS, кликните на нем правой кнопкой мыши и выберите «Свойства».

Открыть свойства файла 1252 в Windows 10

Перейти к дополнительным настройкам безопасности файлы 1252 в Windows 10

Изменить владельца файла в Windows 10

Указать владельца файла Windows 10

Перейти к редактированию доступа к файлу в Windows 10

Предоставить полный доступ файлу в Windows 10

Копирование файла 1251 в операционной системе Windows 10

Переименование копии файла 1251 Windows 10

Вот таким нехитрым образом происходит подмена кодовых страниц. Осталось только перезапустить ПК и убедиться в том, что метод оказался эффективным.

Закрыть

Мы рады, что смогли помочь Вам в решении проблемы.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Закрыть

Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

Читайте также: