Windows 1252 to utf 8

Кодировка Windows-1252 в UTF-8

Windows 1252 to utf 8

Я скопировал определенные файлы с машины Windows на машину Linux. Таким образом, все файлы с кодировкой Windows (windows-1252) должны быть преобразованы в UTF-8.

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

Как я могу указать, что recode утилита должна конвертировать только файлы в кодировке windows-1252, а не файлы UTF-8?

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

recode windows-1252.. myfile.txt

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

encoding character-encoding utf-8 windows-1252

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

теперь есть, конечно, характеристики, которые будут сильно предлагаю что это UTF-8-если он начинается с спецификации UTF-8, например, – но они не будут окончательными.

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

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

тем, который содержит недопустимые последовательности байтов UTF-8), он вполне может преобразовать недопустимые последовательности в вопросительные знаки или что-то подобное.

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

альтернативно, сделайте это программно, а не с помощью утилиты перекодирования – это было бы довольно просто в C#, например.

просто повторю: все это эвристика. Если вы действительно не знаете кодировку файла, ничто не скажет вам об этом со 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 ().

вам не нужно знать, что кодировка строк. Это может быть Latin1 (iso 8859-1), Windows-1252 или UTF8, или строка может иметь их сочетание. Кодировка::toUTF8() преобразует все в utf8.

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

использование:

$utf8_string = Encoding::toUTF8($utf8_or_latin1_or_mixed_string); $latin1_string = Encoding::toLatin1($utf8_or_latin1_or_mixed_string);

скачать:

https://github.com/neitanod/forceutf8

обновление:

Я включил другую функцию, Encoding:: fixUFT8(), которая исправит каждую строку UTF8, которая выглядит искаженной.

использование:

$utf8_string = Encoding::fixUTF8($garbled_utf8_string);

примеры:

echo Encoding::fixUTF8(“Fédération Camerounaise de Football”);echo Encoding::fixUTF8(“Fédération Camerounaise de Football”);echo Encoding::fixUTF8(“FÃÂédÃÂération Camerounaise de Football”);echo Encoding::fixUTF8(“Fédération Camerounaise de Football”);

вывод:

Fédération Camerounaise de FootballFédération Camerounaise de FootballFédération Camerounaise de FootballFédération Camerounaise de Football

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

использовать iconv.

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

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

find . -name “*.txt” -exec iconv -f WINDOWS-1252 -t UTF-8 {} -o {}.ren \; -a -exec mv {}.ren {} \;

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

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

recode utf8..utf16 /dev/null || recode cp1252..utf8 utf8-2.txt

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

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

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

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

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

нашел это документация для команды типа:

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

For /f “tokens=2 delims=:” %%G in ('CHCP') do Set _codepage=%%G CHCP 1252 >NUL CMD.EXE /D /A /C (SET/P=ÿþ) unicode.txt 2>NUL CMD.EXE /D /U /C TYPE ascii_file.txt >> unicode.txt CHCP %_codepage%

метод выше (на основе сценария Карлоса М.) сначала создает файл с меткой порядка байтов (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.

Источник: https://askdev.ru/q/kodirovka-windows-1252-v-utf-8-103103/

Кодировка от Windows-1252 до UTF-8

Windows 1252 to utf 8

Я скопировал некоторые файлы с машины Windows на машину Linux. Таким образом, все файлы с кодировкой Windows (windows-1252) должны быть преобразованы в UTF-8.

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

Как я могу указать, что утилита recode должна конвертировать только файлы в кодировке windows-1252, а не файлы UTF-8?

Пример использования перекодировать:

recode windows-1252.. myfile.txt

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

encoding utf-8 character-encoding windows-1252
ИсточникSam     06 января 2010 в 15:39

  • преобразовать UTF-8 в ANSI (windows-1252)

    Я пытаюсь сохранить строку на иврите в файл, в то время как файл ANSI закодирован. Боюсь, что все попытки провалились. Сам файл PHP – это UTF-8. Итак, вот код, который я пытаюсь использовать : $to_file = בדיקה אם נרשם; $to_file = mb_convert_encoding($to_file, WINDOWS-1255, UTF-8);…

  • UTF-8 или windows-1252?

    У меня есть windows XP дома-home ed, с SP3. В любом случае, в колледже у них есть windows 7. Итак, в основном, когда я сохранил свои документы и принес их сюда, все испортилось. Я писал короткую биографию. Я кодировал свой сайт, и поэтому, как обычно, я использовал кодировку utf-8, стандарт. Но…

вы можете использовать iconv:

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

Gregory Pakosz     06 января 2010 в 15:50

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

Теперь, конечно, есть характеристики, которые сильно предполагают , что это UTF-8 – если он начинается с UTF-8 BOM, например, – но они не будут окончательными.

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

Я не знаком с самим инструментом перекодирования, но вы можете посмотреть, способен ли он перекодировать файл из одной и той же кодировки – если вы делаете это с недопустимым файлом (т. е.

с тем, который содержит недопустимые последовательности байтов UTF-8), он вполне может преобразовать недопустимые последовательности в вопросительные знаки или что-то подобное.

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

В качестве альтернативы, сделайте это программно, а не с помощью утилиты перекодирования – это было бы довольно просто в C#,, например.

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

Jon Skeet     06 января 2010 в 15:42

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

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

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

Вам не нужно знать, какова кодировка ваших строк. Это может быть Latin1 (iso 8859-1), Windows-1252 или UTF8, или строка может иметь их сочетание. Encoding::toUTF8() преобразует все в UTF8.

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

Использование:

$utf8_string = Encoding::toUTF8($utf8_or_latin1_or_mixed_string); $latin1_string = Encoding::toLatin1($utf8_or_latin1_or_mixed_string);

Скачать:

https://github.com/neitanod/forceutf8

Обновление:

Я включил еще одну функцию, Encoding::fixUFT8 (), которая исправит каждую строку UTF8, которая выглядит искаженной.

Использование:

$utf8_string = Encoding::fixUTF8($garbled_utf8_string);

Образцы:

echo Encoding::fixUTF8(“Fédération Camerounaise de Football”);echo Encoding::fixUTF8(“Fédération Camerounaise de Football”);echo Encoding::fixUTF8(“FÃÂédÃÂération Camerounaise de Football”);echo Encoding::fixUTF8(“Fédération Camerounaise de Football”);

будет выводить:

Fédération Camerounaise de FootballFédération Camerounaise de FootballFédération Camerounaise de FootballFédération Camerounaise de Football

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

Sebastián Grignoli     20 сентября 2012 в 00:15

  • Кодировка cp-1252 как utf-8?

    Я пытаюсь написать приложение Java, которое будет работать на сервере linux, но будет обрабатывать файлы, созданные на устаревших машинах Windows, используя cp-1252 в качестве набора символов. Есть ли в любом случае кодировать эти файлы как utf-8 вместо cp-1252, который он генерируется как?

  • Декодирование Windows-1252 символов в строке темы imap до UTF-8

    У меня есть веб-сайт, который позволит людям размещать на нем вещи, используя строку темы email в Outlook. Используя PHP и imap, я получаю строку темы текста и сохраняю ее в базе данных mysql. Но время от времени кто-то будет копировать текст с веб-сайта в строку темы этого email, и я получу…

Нет никакого общего способа определить, закодирован ли файл с определенной кодировкой. Помните, что кодировка – это не что иное, как “agreement”, как биты в файле должны быть сопоставлены с символами.

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

все символы отображаются правильно.

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

https://www.youtube.com/watch?v=WkypCGoVElw

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

kleiba     06 января 2010 в 15:52

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

find . -name “*.txt” -exec iconv -f WINDOWS-1252 -t UTF-8 {} -o {}.ren \; -a -exec mv {}.ren {} \;

Anthony O.     19 января 2016 в 15:54

Используйте команду iconv .

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

Seva Alekseyev     06 января 2010 в 15:42

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

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

thanos.a     27 марта 2013 в 17:03

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

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

recode utf8..utf16 /dev/null || recode cp1252..utf8 utf8-2.txt

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

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

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

mi     20 декабря 2010 в 15:16

Нашел эту документацию для команды TYPE :

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

For /f “tokens=2 delims=:” %%G in ('CHCP') do Set _codepage=%%G CHCP 1252 >NUL CMD.EXE /D /A /C (SET/P=ÿþ) unicode.txt 2>NUL CMD.EXE /D /U /C TYPE ascii_file.txt >> unicode.txt CHCP %_codepage%

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

Napfkuchen     01 октября 2015 в 20:54

В UTF-8 нет символа BOM, поскольку он одновременно является избыточным и недействительным. Где a BOM полезно находится в UTF-16, которые могут быть заменены байтами, как в случае Microsoft.

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

Microsoft UTF-16 требует BOM, поскольку это байтовая замена.

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

Andrew Buckeridge     30 мая 2016 в 05:43

мета-кодировка windows-1252 vs UTF-8

Мои HTML страницы используют . Рекомендуется ли переход на UTF-8 и почему? Я проверил некоторые из моих страниц с UTF-8 и получил вопросительные знаки с некоторыми…

Кодировка для проекта установлена в UTF-8, кодировка по умолчанию возвращает windows-1252

Я столкнулся с проблемой с кодировкой. Не уверен, что это связано с IDE, но я использую NetBeans 7.4. Я получил этот кусок кода в моем проекте J2EE: String test = kukuřičné; System.out.println(new…

“\x9D ” в UTF-8 в переводе с Windows-1252 на UTF-8

Я создал загрузчик csv в своем приложении rails, но иногда я получаю ошибку \x9D в UTF-8 в переводе с Windows-1252 на UTF-8 Это источник для моего загрузчика: def self.import(file)…

преобразовать UTF-8 в ANSI (windows-1252) Я пытаюсь сохранить строку на иврите в файл, в то время как файл ANSI закодирован. Боюсь, что все попытки провалились. Сам файл PHP – это UTF-8. Итак, вот код, который я пытаюсь использовать :…
UTF-8 или windows-1252?

У меня есть windows XP дома-home ed, с SP3. В любом случае, в колледже у них есть windows 7. Итак, в основном, когда я сохранил свои документы и принес их сюда, все испортилось. Я писал короткую…

Кодировка cp-1252 как utf-8?

Я пытаюсь написать приложение Java, которое будет работать на сервере linux, но будет обрабатывать файлы, созданные на устаревших машинах Windows, используя cp-1252 в качестве набора символов. Есть…

Декодирование Windows-1252 символов в строке темы imap до UTF-8

У меня есть веб-сайт, который позволит людям размещать на нем вещи, используя строку темы email в Outlook. Используя PHP и imap, я получаю строку темы текста и сохраняю ее в базе данных mysql. Но…

PHP iconv от utf-8 до windows-1252 без специальных символов

Я пытаюсь закодировать содержимое файла вот так: $f_file = fopen(dreams.txt, w); $string = Los sueños se cumplen.; $string_encoded = iconv( mb_detect_encoding( $string ), 'Windows-1252//TRANSLIT',…

найти причину автоматического обнаружения кодировки (UTF-8 vs Windows-1252)

У меня есть CSV с содержанием, которое кодируется UTF-8. Однако различные приложения и системы ошибочно обнаруживают кодировку CSV как Windows-1252 , что нарушает все специальные символы в файле…

UTF-8 – Windows-1252

Я использую node для чтения текстового документа с помощью readFile, и в этом документе есть символ � Это символ windows-1252, но он автоматически преобразуется в javascript в utf-8. Правильный…

Источник: https://coderoad.ru/2014069/%D0%9A%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0-%D0%BE%D1%82-Windows-1252-%D0%B4%D0%BE-UTF-8

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.