Convert from utf8 to windows 1251

Convert text from UTF-8 to Windows 1251

I try to convert text in utf8 to windows1251.

This is source text Ñàíêò-Ïåòåðáóðã This is targer Санкт-Петербург

I tested a lot of functions: Utf8ToAnsi, UTF8ToString, Utf8Encode and other but didn’t get true result.

2 Answers 2

Let’s try to guess what you are asking. Look at the first five characters:

If we assume that they are in fact from 8 bit Windows code page 1252 then in hex they are encoded like this:

Now, those five bytes when interpreted as 8 bit Windows code page 1251 are:

So it seems that there is no UTF-8 involved here. You are simply misinterpreting text as being from code page 1252 when in fact it is from 1251.

I tested a lot of functions: Utf8ToAnsi, UTF8ToString, Utf8Encode and other but didn’t get true result.

As a more general point, when you find yourself calling functions at random, usually that means that you don’t yet fully understand the problem. It’s a useful skill to be able to recognise that feeling, and know that it is time to step back and attempt to gain a deeper understanding.

There’s not much point in anybody explaining how to convert from UTF-8 to 1251 since that’s not what you need to do. I’m not going to try to show you any code to solve your problem because I don’t know:

  1. Where the data comes from, or
  2. What form you need the data to be subsequently transformed into.

Most likely you have read these bytes into an AnsiString with code page 1252. But at this point I judge the guesswork to be a step too far. If you add some clarification to your question then we might be able to add more detail.

I try to convert text in utf8 to windows1251.

Since you are using Delphi 2009+, the easiest solution is to use the UT8String and AnsiString(N) types and let the RTL handle the conversion for you (unless you are compiling for mobile platforms, in which case UTF8String and AnsiString(N) are not available without installing a third party compiler patch):

Alternatively, you can use the RTL’s UnicodeFromLocaleChars() and LocaleCharsFromUnicode() functions:

Or you can use the Win32 MultiByteToWideChar() and WideCharToMultiByte() functions directly (or a third-party Unicode library, such as iconv or ICU):

This is source text Ñàíêò-Ïåòåðáóðã This is targer Санкт-Петербург

Ñàíêò-Ïåòåðáóðã is not the UTF-8 encoded form of Санкт-Петербург , the correct UTF-8 encoded form would be Санкт-Петербург instead. So, as other people have pointed out, your data is not actually encoded in UTF-8 to begin with.

I tested a lot of functions: Utf8ToAnsi, UTF8ToString, Utf8Encode and other but didn’t get true result.

Utf8ToAnsi() does not allow you to specify the target charset. In Delphi 2009+, it decodes a UTF-8 string to a UTF-16 UnicodeString . In pre-2009 versions, it decodes to an AnsiString that is encoded using the OS default Ansi codepage, whatever that happens to be.

Читайте также:  Linux mint kde 5 когда будет

UTF8ToString() decodes a UTF-8 string to a UTF-16 UnicodeString .

Utf8Encode() encodes a UTF-16 WideString / UnicodeString to UTF-8.

Технарь

Блог о программировании и околопрограммерских штуках.

Конвертация строки из utf-8 в win-1251 на PHP

Для конвертации на php строки из utf-8 в windows-1251 и наоборот, можно использовать следующую функцию:

если необходимо обратное действие, то:

Описание функции iconv:
string iconv ( string from_kodirovka, string to_kodirovka, string str )
Производит преобразование кодировки символов строки str из начальной кодировки from_kodirovka в конечную to_kodirovka. Возвращает строку в новой кодировке, или FALSE в случае ошибки.

Если добавить //TRANSLIT к параметру out_charset будет включена транслитеризация. Это означает, что вслучае, когда символа нет в конечной кодировке, он заменяется одним или несколькими аналогами. Если добавить //IGNORE, то символы, которых нет в конечной кодировке, будут опущены. Иначе, будет возвращена строка str, обрезанная до первого недопустимого символа.

В случае, если ваш хостинг не поддерживает iconv, для конвертации из utf-8 в win-1251 и наоборот можно использовать следующие функции:

Конвертация строки из utf-8 в win-1251 на PHP : 5 комментариев

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

ну просто восхитительные функции — поставил и забыл про конвертацию)

почему-то после конвертации из utf8 в win1251 вместо букв вопросительные знаки:
.

а у меня не работает 🙁

ругается на вот эту строку:

for($i = 0, $l = strlen($s); $i

Нужно заменить эту 6-ую строку на:
for($i = 0, $l = strlen($s); $i

Пакетное изменение кодировки из UTF-8 в Windows-1251

Работая над проектом интернет магазина столкнулся, с проблемой кодировки в компонентах движка.Проблема была не в оригинальных файлах магазина, которые как и пологается были в кодировке UTF-8, а во врезаемых модулях которые были в кодировке CP-1251, потому что писались к предыдущим версиям CMS где всё было в кодировке Windows-1251. Кроме этого встретил модули и их модификации где была смешанная кодировка: код в Utf-8, а различные сообщения на кириллице в Cp-1251.

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

⚠ Смартфоны и ← гаджеты

Промокоды от партнёров AliExpress к 11-ти летиюAliExpress!

Промокоды для СНГ (без Украины)

  • Admitad100HB — скидка 100 рублей при заказе от 1000 рублей для всех покупателей.
  • Admitad200HB — скидка 200 рублей при заказе от 1600 рублей для всех покупателей. Новые пользователи могут насладиться скидками уже сейчас!
  • По промокоду Admitad250HB действует скидка 250 рублей при заказе от 750 рублей для новых покупателей.
Читайте также:  Отключить режим windows aero

Успей! Количество промокодов ограничено.
Перейти на AliExpress
Период действия промокода: 24 марта (10:00 МСК) – 3 апреля (09:59 МСК). Промокоды для всех стран и Украины (кроме стран СНГ)

  • ALIAN4 — скидка $4 при заказе от $30 для всех покупателей .
  • ALIAN7 — скидка $7 при заказе от $50 для всех покупателей .
  • ALIAN9 — скидка $9 при заказе от $90 для всех покупателей.
  • ALIAN11 — скидка $11 при заказе от $110 для всех покупателей.
  • AMAN4 — скидка $4 при заказе от $30 для всех покупателей .
  • AMAN7 — скидка $7 при заказе от $50 для всех покупателей .
  • AMAN9 — скидка $9 при заказе от $90 для всех покупателей.
  • AMAN10 — скидка $11 при заказе от $110 для всех покупателей.
  • ANNIVERNEW4 — скидка $4 при заказе от $5 для новых покупателей.

Внимание! Количество промокодов ограничено.
Перейти на AliExpress
Период действия промокодов: 29 марта (10:00 МСК) – 3 апреля (09:59 МСК). Ещё несколько промокодов

  • ePN250HB — скидка 250 руб. при заказе от 750 руб.Только для новых покупателей.
  • ePN200HB — скидка 200 рублей при заказе от 1600 рублей. Для всех покупателей.
  • ePN100HB — скидка 100 рублей при заказе от 1000 рублей. Для всех покупателей.

Перейти на AliExpress
Период действия с 27 марта 10:00 по 3 апреля 09:59 или пока не закончатся активации.

EncodingConverter.Разумеется, наткнулся на эту программу совершенно случайно, перекапывая различные форумы, а до этого попадались другие решение только не подходящие под мою задачу.

Моё Описание программы EncodingConverter

Для запуска программы EncodingConverter,

  • открываем одноименный файл EncodingConverter. exe.
  1. В начале через кнопку обзор выбираем папку с файлами (в которых нужно изменить кодировку), при этом в папке могут содержаться файлы с разными расширениями и разным количеством вложенных папок.Флажок обрабатывать вложенные папки оставляем на месте.
  2. Затем в выпадающим списке выбираем новую кодировку. В нашем случае это Cp-1251, но можно по желанию выбрать и такие как:
    • UTF-8 без BOM
    • UTF-8 с BOM
    • UTF-16-Le
    • UTF-16-BE
    • UTF-32-LE
    • UTF-32-BE
    • CP-1251
  3. В поле фильтр, нам нужно дописать те расширение файлов, в которых будем изменять кодировку. В поле уже имеется ряд масок, поэтому в начало или конец строки дописываем примерно так: *. php|*. html|*. htm и так далее, разделитель масок — это вертикальная черта.
  4. Перед тем как нажать кнопку начала изменения кодировки, нажмите на кнопку анализировать.

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

Где скачать EncodingConverter

А скачать эту версию программы EncodingConverter, которую я сам использую можно с моего сайта.Скачать EncodingConverterРазмер архива Zip примерно 23 KB.

Читайте также:  Что такое команда cd линукс

Легко сохранить или поделится в:

Внимание, Бдительным!

Если вдруг ссылка стала не рабочей, пожалуйста скопируйте ссылку из адресной строки браузера на эту страницу и отправте её мне черезФорму обратной связи в теме сообщения выбрав подходящию тему.
Благодарю вас за понимание.

Конвертация кодировок utf-8 и win-1251 в PHP через iconv

Обычно php страница или сайт имеет одну базовую кодировку. Я работаю только с UTF-8, но бывают случаи, когда приходится использовать какой-нибудь php файл с кодировкой win-1251, а передаваемые в него значения идут в кодировке UTF-8. В этом случае после исполнения скрипта появляются кракозябры.

Таких ситуаций может быть множество, например, при использовании функции отправки сообщений mail(), работе с PDF обработкой или даже при различных действиях с БД. В идеале нужно обязательно избавляться от таких хвостов и не допускать в коде функции конвертации, но если это просто невозможно, то на помощь вам придет функция iconv.

Синтаксис функции: $string= iconv(‘начальная кодировка’, ‘конечная кодировка’, $string);

Здесь $string — строка, кодировку которой мы изменяем

Из этого выходит, что для того, чтобы преобразовать строку из кодировки utf-8 в win-1251 нужно писать следующее: $string= iconv(‘utf-8’, ‘win-1251’, $string);

Из win-1251 в utf-8: $string= iconv(‘win-1251’, ‘utf-8’, $string);

На заметку, помните, что кодировку в php странице можно указывать за счет установки header-а документа. Например, если ваша страница в UTF-8 без BOM, то в самом начале документа ставьте: . Если же windows 1251, то сам документ должен быть в ANSI, а в первой строке можете поставить: . Иногда эти манипуляции помогают с письмами, которые приходят в кракозябрах из-за неверной кодировки.

Возможность преобразования текста UTF-8 в Windows-1251

Всем привет! Возникла необходимость проверить, можно ли преобразовать некоторый текст UTF-8 в кодировку Windows-1251 без потерь. То есть, справедливо ли для заданного текста, что все символы текста существуют в таблице символов кодировки назначения и ни один из символов при преобразовании не будет заменён знаком вопроса.

Можно, конечно:

  • преобразовать весь текст в Windows-1251 с помощью Encoding.Convert() и потом сравнить с исходником — но это может оказаться затратным процессом;
  • посимвольно проверить строку на соответствие кодировке назначения до первого «фейла» — слишком низкоуровнево и «велосипедно». И мне не верится, что ничего подобного не идёт «в коробке» при всех гибких возможностях работы с кодировками в .NET.

Вопрос, собственно, — есть ли более простой, корректный, быстрый способ, о котором я не знаю?

Декодировать Windows-1251 в utf-8
Сделал запрос на сайт, приходит текст такого типа(должна кириллица) Р’С‹ будете.

Кодировка Windows-1251 в Windows Phone
Занимаюсь парсингом сайта на Windows Phone при помощи Html Agility Pack. Сайт в кодировке.

Как перекодировать данные из windows-1251 в UTF-8?
Как перекодировать данные из windows-1251 в UTF-8? Заранее спасибо за совет!

Напишите функцию перевода строки из кодировки Windows-1251 в UTF-8
Кто знает, напишите, пожалуйста, функцию перевода строки из кодировки Windows-1251 в UTF-8. Заранее.

Оцените статью