Especially when writing PHP scripts for use on different servers, it is a very good idea to explicitly set the internal encoding somewhere on top of every document served, e.g.
mb_internal_encoding("UTF-8");
This, in combination with mysql-statement "SET NAMES 'utf8'", will save a lot of debugging trouble.
Also, use the multi-byte string functions instead of the ones you may be used to, e.g. mb_strlen() instead of strlen(), etc.mb_internal_encoding
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
mb_internal_encoding
Референца за `function.mb-internal-encoding.php` со подобрена типографија и навигација.
mb_internal_encoding
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
mb_internal_encoding — Постави/земи внатрешна кодировка на знаци
= NULL
Постави/земи ја внатрешната кодировка на знаци
Параметри
encoding-
encodingе името на кодировката на знаци што се користи за конверзија на кодировката на знаци на HTTP влез, конверзија на кодировката на знаци на HTTP излез и стандардната кодировка на знаци за функциите на низи дефинирани од модулот mbstring. Треба да забележите дека внатрешната кодировка е сосема различна од онаа за мултибајт регуларни изрази.
Вратени вредности
Враќа encoding е поставено, тогаш враќа true на успех или false при неуспех. Во овој случај, кодировката на знаци за мултибајт регуларни изрази НЕ е променета. Ако encoding е изоставено, тогаш се враќа името на тековната кодировка на знаци.
Errors/Exceptions
Од PHP 8.0.0, а ValueError се фрла ако вредноста на encoding е неважечка кодировка. Пред PHP 8.0.0, а E_WARNING беше емитирано наместо тоа.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.0.0 |
encoding сега е null.
|
| 8.0.0 |
Сега фрла ValueError if
encoding е неважечка кодировка. Претходно а E_WARNING беше емитирано наместо тоа.
|
Примери
Пример #1 mb_internal_encoding() example
<?php
/* Set internal character encoding to UTF-8 */
mb_internal_encoding("UTF-8");
/* Display current internal character encoding */
echo mb_internal_encoding();
?>Види Исто така
- mb_http_input() - Откриј ја кодировката на знаци на HTTP влез
- mb_http_output() - Постави/земи ја кодировката на знаци на HTTP излез
- mb_detect_order() - Постави/земи го редоследот за откривање на кодировка на знаци
- mb_regex_encoding() - Постави/земи ја кодировката на знаци за мултибајт регуларни изрази
Белешки од корисници 5 белешки
all together
<?php
// ------------------------------------------------------------
header('Content-Type: text/html; charset=UTF-8');
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_http_input('UTF-8');
mb_regex_encoding('UTF-8');
// ------------------------------------------------------------
?>Be aware that the strings in your source files must match the encoding you specify by mb_internal_encoding. It appears the Parser loads raw bytes from the file and refers to its internal encoding to determine their actual encoding.
To demonstrate, the following outputs as espected when the /source/ file is Latin-1 encoded:
<?php
mb_internal_encoding("iso-8859-1");
mb_http_output( "UTF-8" );
ob_start("mb_output_handler");
echo "???<br/>";
?>???
Now, a typical use of mb_internal_encoding is shown as follows. Make the change to "utf-8" but leave the /source/ file encoding unchanged:
<?php
mb_internal_encoding("UTF-8");
mb_http_output( "UTF-8" );
ob_start("mb_output_handler");
echo "???<br/>";
?>???
The output will just show the <br/> tag and no text.
Save the file as UTF-8 encoding and then the results will be as expected.In response to mortoray at ecircle-ag dot com:
The characters display fine as long as you set the Encoding to something more "Latin 1" compatible (i.e. US-ACSII, ISO-8859-1, ISO-8859-1, or Windows 1252). PHP.net auto-detects to UTF-8