Меню Рубрики

Mb convert encoding windows 1251 utf 8

mb_convert_encoding

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_convert_encoding — Преобразует кодировку символов

Описание

Преобразует символы val в кодировку to_encoding . Также можно указать необязательный параметр from_encoding . Если val является массивом ( array ), все его строковые ( string ) значения будут преобразованы рекурсивно.

Список параметров

Строка ( string ) или массив ( array ), для преобразования.

Кодировка, в которую будут преобразованы данные из val .

Параметр для указания исходной кодировки строки. Это может быть массив ( array ), или строка со списком кодировок через запятую. Если параметр from_encoding не указан, то кодировка определяется автоматически.

Возвращаемые значения

Преобразованная строка ( string ) или массив ( array ).

Примеры

Пример #1 Пример использования mb_convert_encoding()

/* Преобразует строку в кодировку SJIS */
$str = mb_convert_encoding ( $str , «SJIS» );

/* Преобразует из EUC-JP в UTF-7 */
$str = mb_convert_encoding ( $str , «UTF-7» , «EUC-JP» );

/* Автоматически определяется кодировка среди JIS, eucjp-win, sjis-win, затем преобразуется в UCS-2LE */
$str = mb_convert_encoding ( $str , «UCS-2LE» , «JIS, eucjp-win, sjis-win» );

/* «auto» используется для обозначения «ASCII,JIS,UTF-8,EUC-JP,SJIS» */
$str = mb_convert_encoding ( $str , «EUC-JP» , «auto» );
?>

Смотрите также

  • mb_detect_order() — Установка/получение списка кодировок для механизмов определения кодировки

Список изменений

Версия Описание
7.2.0 Функция теперь также принимает массив ( array ) в val . Ранее поддерживались только строки ( string ).

User Contributed Notes 32 notes

For my last project I needed to convert several CSV files from Windows-1250 to UTF-8, and after several days of searching around I found a function that is partially solved my problem, but it still has not transformed all the characters. So I made ​​this:

function w1250_to_utf8($text) <
// map based on:
// http://konfiguracja.c0.pl/iso02vscp1250en.html
// http://konfiguracja.c0.pl/webpl/index_en.html#examp
// http://www.htmlentities.com/html/entities/
$map = array(
chr(0x8A) => chr(0xA9),
chr(0x8C) => chr(0xA6),
chr(0x8D) => chr(0xAB),
chr(0x8E) => chr(0xAE),
chr(0x8F) => chr(0xAC),
chr(0x9C) => chr(0xB6),
chr(0x9D) => chr(0xBB),
chr(0xA1) => chr(0xB7),
chr(0xA5) => chr(0xA1),
chr(0xBC) => chr(0xA5),
chr(0x9F) => chr(0xBC),
chr(0xB9) => chr(0xB1),
chr(0x9A) => chr(0xB9),
chr(0xBE) => chr(0xB5),
chr(0x9E) => chr(0xBE),
chr(0x80) => ‘€’,
chr(0x82) => ‘‚’,
chr(0x84) => ‘„’,
chr(0x85) => ‘…’,
chr(0x86) => ‘†’,
chr(0x87) => ‘‡’,
chr(0x89) => ‘‰’,
chr(0x8B) => ‘‹’,
chr(0x91) => ‘‘’,
chr(0x92) => ‘’’,
chr(0x93) => ‘“’,
chr(0x94) => ‘”’,
chr(0x95) => ‘•’,
chr(0x96) => ‘–’,
chr(0x97) => ‘—’,
chr(0x99) => ‘™’,
chr(0x9B) => ‘’’,
chr(0xA6) => ‘¦’,
chr(0xA9) => ‘©’,
chr(0xAB) => ‘«’,
chr(0xAE) => ‘®’,
chr(0xB1) => ‘±’,
chr(0xB5) => ‘µ’,
chr(0xB6) => ‘¶’,
chr(0xB7) => ‘·’,
chr(0xBB) => ‘»’,
);
return html_entity_decode(mb_convert_encoding(strtr($text, $map), ‘UTF-8’, ‘ISO-8859-2’), ENT_QUOTES, ‘UTF-8’);
>

I’ve been trying to find the charset of a norwegian (with a lot of ø, æ, å) txt file written on a Mac, i’ve found it in this way:

= «A strange string to pass, maybe with some ø, æ, å characters.» ;

foreach( mb_list_encodings () as $chr ) <
echo mb_convert_encoding ( $text , ‘UTF-8’ , $chr ). » : » . $chr . «
» ;
>
?>

The line that looks good, gives you the encoding it was written in.

Hope can help someone

many people below talk about using
( $s , ‘HTML-ENTITIES’ , ‘UTF-8’ );
?>
to convert non-ascii code into html-readable stuff. Due to my webserver being out of my control, I was unable to set the database character set, and whenever PHP made a copy of my $s variable that it had pulled out of the database, it would convert it to nasty latin1 automatically and not leave it in it’s beautiful UTF-8 glory.

So [insert korean characters here] turned into .

I found myself needing to pass by reference (which of course is deprecated/nonexistent in recent versions of PHP)
so instead of
(& $s , ‘HTML-ENTITIES’ , ‘UTF-8’ );
?>
which worked perfectly until I upgraded, so I had to use
( ‘mb_convert_encoding’ , array(& $s , ‘HTML-ENTITIES’ , ‘UTF-8’ ));
?>

Hope it helps someone else out

Hey guys. For everybody who’s looking for a function that is converting an iso-string to utf8 or an utf8-string to iso, here’s your solution:

public function encodeToUtf8($string) <
return mb_convert_encoding($string, «UTF-8», mb_detect_encoding($string, «UTF-8, ISO-8859-1, ISO-8859-15», true));
>

public function encodeToIso($string) <
return mb_convert_encoding($string, «ISO-8859-1», mb_detect_encoding($string, «UTF-8, ISO-8859-1, ISO-8859-15», true));
>

For me these functions are working fine. Give it a try

aaron, to discard unsupported characters instead of printing a ?, you might as well simply set the configuration directive:

in your php.ini. Be sure to include the quotes around none. Or at run-time with

My solution below was slightly incorrect, so here is the correct version (I posted at the end of a long day, never a good idea!)

Again, this is a quick and dirty solution to stop mb_convert_encoding from filling your string with question marks whenever it encounters an illegal character for the target encoding.

function convert_to ( $source , $target_encoding )
<
// detect the character encoding of the incoming file
$encoding = mb_detect_encoding ( $source , «auto» );

// escape all of the question marks so we can remove artifacts from
// the unicode conversion process
$target = str_replace ( «?» , «[question_mark]» , $source );

// convert the string to the target encoding
$target = mb_convert_encoding ( $target , $target_encoding , $encoding );

// remove any question marks that have been introduced because of illegal characters
$target = str_replace ( «?» , «» , $target );

// replace the token string «[question_mark]» with the symbol «?»
$target = str_replace ( «[question_mark]» , «?» , $target );

return $target ;
>
?>

Hope this helps someone! (Admins should feel free to delete my previous, incorrect, post for clarity)
-A

For those wanting to convert from $set to MacRoman, use iconv():

= iconv ( ‘UTF-8’ , ‘macintosh’ , $string );

?>

(‘macintosh’ is the IANA name for the MacRoman character set.)

instead of ini_set(), you can try this

// convert UTF8 to DOS = CP850
//
// $utf8_text=UTF8-Formatted text;
// $dos=CP850-Formatted text;

$dos = mb_convert_encoding($utf8_text, «CP850», mb_detect_encoding($utf8_text, «UTF-8, CP850, ISO-8859-15», true));

If you are trying to generate a CSV (with extended chars) to be opened at Exel for Mac, the only that worked for me was:
( $CSV , ‘Windows-1252’ , ‘UTF-8’ ); ?>

I also tried this:

//Separado OK, chars MAL
iconv ( ‘MACINTOSH’ , ‘UTF8’ , $CSV );
//Separado MAL, chars OK
chr ( 255 ). chr ( 254 ). mb_convert_encoding ( $CSV , ‘UCS-2LE’ , ‘UTF-8’ );
?>

But the first one didn’t show extended chars correctly, and the second one, did’t separe fields correctly

Why did you use the php html encode functions? mbstring has it’s own Encoding which is (as far as I tested it) much more usefull:

$text = mb_convert_encoding($text, ‘HTML-ENTITIES’, «UTF-8»);

To add to the Flash conversion comment below, here’s how I convert back from what I’ve stored in a database after converting from Flash HTML text field output, in order to load it back into a Flash HTML text field:

function htmltoflash($htmlstr)
<
return str_replace(«
«,»\n»,
str_replace(» «,»>»,
mb_convert_encoding(html_entity_decode($htmlstr),
«UTF-8″,»ISO-8859-1»))));
>

Another sample of recoding without MultiByte enabling.
(Russian koi->win, if input in win-encoding already, function recode() returns unchanged string)

// 0 — win
// 1 — koi
function detect_encoding ( $str ) <
$win = 0 ;
$koi = 0 ;

if( $win $koi ) <
return 1 ;
> else return 0 ;

// recodes koi to win
function koi_to_win ( $string ) <

$kw = array( 128 , 129 , 130 , 131 , 132 , 133 , 134 , 135 , 136 , 137 , 138 , 139 , 140 , 141 , 142 , 143 , 144 , 145 , 146 , 147 , 148 , 149 , 150 , 151 , 152 , 153 , 154 , 155 , 156 , 157 , 158 , 159 , 160 , 161 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 , 174 , 175 , 176 , 177 , 178 , 179 , 180 , 181 , 182 , 183 , 184 , 185 , 186 , 187 , 188 , 189 , 190 , 191 , 254 , 224 , 225 , 246 , 228 , 229 , 244 , 227 , 245 , 232 , 233 , 234 , 235 , 236 , 237 , 238 , 239 , 255 , 240 , 241 , 242 , 243 , 230 , 226 , 252 , 251 , 231 , 248 , 253 , 249 , 247 , 250 , 222 , 192 , 193 , 214 , 196 , 197 , 212 , 195 , 213 , 200 , 201 , 202 , 203 , 204 , 205 , 206 , 207 , 223 , 208 , 209 , 210 , 211 , 198 , 194 , 220 , 219 , 199 , 216 , 221 , 217 , 215 , 218 );
$wk = array( 128 , 129 , 130 , 131 , 132 , 133 , 134 , 135 , 136 , 137 , 138 , 139 , 140 , 141 , 142 , 143 , 144 , 145 , 146 , 147 , 148 , 149 , 150 , 151 , 152 , 153 , 154 , 155 , 156 , 157 , 158 , 159 , 160 , 161 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 , 174 , 175 , 176 , 177 , 178 , 179 , 180 , 181 , 182 , 183 , 184 , 185 , 186 , 187 , 188 , 189 , 190 , 191 , 225 , 226 , 247 , 231 , 228 , 229 , 246 , 250 , 233 , 234 , 235 , 236 , 237 , 238 , 239 , 240 , 242 , 243 , 244 , 245 , 230 , 232 , 227 , 254 , 251 , 253 , 255 , 249 , 248 , 252 , 224 , 241 , 193 , 194 , 215 , 199 , 196 , 197 , 214 , 218 , 201 , 202 , 203 , 204 , 205 , 206 , 207 , 208 , 210 , 211 , 212 , 213 , 198 , 200 , 195 , 222 , 219 , 221 , 223 , 217 , 216 , 220 , 192 , 209 );

$end = strlen ( $string );
$pos = 0 ;
do <
$c = ord ( $string [ $pos ]);
if ( $c > 128 ) <
$string [ $pos ] = chr ( $kw [ $c — 128 ]);
>

function recode ( $str ) <

$enc = detect_encoding ( $str );
if ( $enc == 1 ) <
$str = koi_to_win ( $str );
>

Источник

Одминский блог

Блог о технологиях, технократии и методиках борьбы с граблями

Смена кодировки сайта из CP1251 на UTF-8

Перевозил тут пачку сайтов с LAMP на LNAMP, где фронтэндом выступает NGINX. И все бы ничего, если бы не пачка статических сателлитов в кодировке Windows-1251 (cp1251).

Как тут прикололся девака – при анализе сайта, надо сначала чекать кодировку и в случае обнаружения кодировки сайта cp1251 – проверку возраста можно не осуществлять. Но, тем не менее, в инетах до сих пор встречаются такие мастадонты, которые клепают сайты в кодировке CP1251.

Под апачем, при добавлении сайта в ISP Panel это даже не заметишь, а вот при попытке добавить этот же сайт в Vesta CP, получаешь гемор на задницу с крикозябрами. Поэтому надо редактировать конфиг Nginx, предварительно прикрутив туда виндовую кодировку. Но, насколько я помню, у меня этот танец с бубнами не задался и в тот раз, я просто повесил саты на LAMP.

Так что оставалось либо плясать с бубнами вокруг прикручивания виндовой кодировки к NGINX, либо перекодивать файлы в родную для нжинкса UTF-8. Сделать это можно средствами текстового редактора Notepad++ путем перевода кодировки документа и последующего сохранения; либо же в самом линухе. Как я выше заметил, саты статические, то есть на файлах, без использования базы данных. Поэтому перекодировать надо было именно файлы. С базой данных все происходило бы несколько иначе.

Перекодировка файла из CP1251 в UTF-8 производится в консоли через команду iconv
# iconv -f cp1251 -t utf8 FILE-CP1251 -o FILE-UTF8
либо же можно переписать файл в самого себя
# iconv -f cp1251 -t utf8 file.txt -o file.txt

Но поскольку мне надо было перекодировать большое число файлов php, содержащихся в разных папках, то мне пришлось составить небольшое предложение:
# find /path-to-files/ -type f -name \*php -exec iconv -f cp1251 -t utf-8 ‘<>‘ -o ‘<>‘ \;

Конвертит все в лет.

Для конвертации кодировок есть еще утилита enconv, входящая в состав пакета enca – вот он как раз конвертит сам в себя по умолчанию, перезаписывая файл выходной кодировкой:
# enconv -c file.txt

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

Источник

Универсальный декодер — конвертер кириллицы

Результат

[Результат перекодировки появится здесь. ]

Поставьте ссылку на наш сайт!
Универсальный декодер кириллицы Custom Work
For a small fee I can help you quickly recode/recover large pieces of data — texts, databases, websites. or write custom functions you can use (invoice available).
FAQ and contact information.

О программе

Здравствуйте! Эта страница может пригодиться, если вам прислали текст (предположительно на кириллице), который отображается в виде странной комбинации загадочных символов. Программа попытается угадать кодировку, а если не получится, покажет примеры всех комбинаций кодировок, чтобы вы могли выбрать подходящую.

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

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

Ограничения

  • Если текст состоит из вопросительных знаков («. ?? . «), то проблема скорее всего на стороне отправителя и восстановить текст не получится. Попросите отправителя послать текст заново, желательно в формате простого текстового файла или в документе LibreOffice/OpenOffice/MSOffice.
  • Не любой текст может быть гарантированно декодирован, даже если есть вы уверены на 100%, что он написан в кириллице.
  • Анализируемый и декодированный тексты ограничены размером в 100 Кб.
  • Программа не всегда дает стопроцентную точность: при перекодировке из одной кодовой страницы в другую могут пропасть некоторые символы, такие как болгарские кавычки, реже отдельные буквы и т.п.
  • Программа проверяет максимум 7245 вариантов из двух и трех перекодировок: если имело место многократное перекодирование вроде koi8(utf(cp1251(utf))), оно не будет распознано или проверено. Обычно возможные и отображаемые верные варианты находятся между 32 и 255.
  • Если части текста закодированы в разных кодировках, программа сможет распознать только одну часть за раз.

Условия использования

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

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

Переводчики

Страница подготовки переводов на другие языки находится тут.

Что нового

October 2013 : I am trying different optimizations for the system which should make the decoder run faster and handle more text. If you notice any problem, please notify me ASAP.

На английской версии страницы доступен changelog программы.

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Mb 508 драйвер windows 7
  • Mayvio budget для windows
  • Maxxaudio windows 10 dell
  • Maxthon для windows xp 32 bit
  • Maximize window windows 10