Internationalization UConverter::transcode

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::transcode — 문자열을 한 문자 인코딩에서 다른 문자 인코딩으로 변환


설명

public static UConverter::transcode(
    string $str,
    string $toEncoding,
    string $fromEncoding,
    ?array $options = null
): string|false
                

strfromEncoding에서 toEncoding으로 변환합니다.


매개변수

str
변환할 문자열입니다.
toEncoding
원하는 결과 인코딩입니다.
fromEncoding
str을 해석하는 데 사용되는 현재 인코딩입니다.
options
다음 키를 포함할 수 있는 선택적 배열:
  • 'to_subst' - toEncoding으로 인코딩할 수 없는 str의 문자 대신 사용할 대체 문자입니다. 지정된 경우 대상 인코딩에서 단일 문자를 나타내야 합니다.

반환 값

변환된 문자열을 반환하거나 실패 시 false를 반환합니다.


Examples

예제 #1 UTF-8에서 UTF-16으로 및 그 반대로 변환

                  
<?php
$utf8_string = "\x5A\x6F\xC3\xAB"; // 'Zoë' in UTF-8
$utf16_string = UConverter::transcode($utf8_string, 'UTF-16BE', 'UTF-8');
echo bin2hex($utf16_string), "\n";

$new_utf8_string = UConverter::transcode($utf16_string, 'UTF-8', 'UTF-16BE');
echo bin2hex($new_utf8_string), "\n";
?>
                  
                

위의 예는 다음을 출력합니다.

005a006f00eb
5a6fc3ab
                

예제 #2 입력에 잘못된 문자가 있습니다.

입력 문자열에 fromEncoding으로 지정된 인코딩에서 유효하지 않은 바이트 시퀀스가 ​​포함되어 있으면 toEncoding으로 변환하기 전에 유니코드 코드 포인트 U+FFFD(대체 문자)로 대체됩니다.

                  
<?php
$invalid_utf8_string = "\xC3"; // incomplete multi-byte UTF-8 sequence
$utf16_string = UConverter::transcode($invalid_utf8_string, 'UTF-16BE', 'UTF-8');
echo bin2hex($utf16_string), "\n";
?>
                  
                

위의 예는 다음을 출력합니다.

fffd
                

예제 #3 인코딩할 수 없는 문자

입력 문자열에 toEncoding으로 표현할 수 없는 문자가 포함되어 있으면 단일 문자로 대체됩니다. 사용할 기본 문자는 인코딩에 따라 다르며 'to_subst' 옵션을 사용하여 제어할 수 있습니다.

                  
<?php
$utf8_string = "\xE2\x82\xAC"; // € (Euro Sign) does not exist in ISO 8859-1

// Default replacement in ISO 8859-1 is "\x1A" (Substitute)
$iso8859_1_string = UConverter::transcode($utf8_string, 'ISO-8859-1', 'UTF-8');
echo bin2hex($iso8859_1_string), "\n";

// Specify a replacement of '?' ("\x3F") instead
$iso8859_1_string = UConverter::transcode(
    $utf8_string, 'ISO-8859-1', 'UTF-8', ['to_subst' => '?']
);
echo bin2hex($iso8859_1_string), "\n";

// Since ISO 8859-1 cannot map U+FFFD, invalid input is also replaced by to_subst
$invalid_utf8_string = "\xC3"; // incomplete multi-byte UTF-8 sequence
$iso8859_1_string = UConverter::transcode(
    $invalid_utf8_string, 'ISO-8859-1', 'UTF-8', ['to_subst' => '?']
);
echo bin2hex($iso8859_1_string), "\n";
?>
                  
                

위의 예는 다음을 출력합니다.

1a
3f
3f
                

기타

  • mb_convert_encoding() - 문자열을 한 문자 인코딩에서 다른 문자 인코딩으로 변환
  • iconv() - 문자열을 한 문자 인코딩에서 다른 문자 인코딩으로 변환