2017-04-19 10 views
0

유니 코드를 문자로 변환하고 싶습니다.유니 코드 문자열을 문자로 변환하는 방법

이 경우 나는 https://stackoverflow.com/a/7278961/4073217 게시물을 시도했지만 나에게 적합하지 않습니다.

:

$string = '%u0391%u03b8%u03b1%u03bd%u03b1%u03c3%u03af%u03bf%u03c5'; 
$string = preg_replace('/%u([0-9A-F]+)/', '&#x$1;', $string); 
echo html_entity_decode($string, ENT_COMPAT, 'UTF-8'); 

출력 Αθανασίου 수 있지만, 상기 방법 Αb8b1bdb1c3afbfc5 복귀한다.

뭐가 잘못 되었나요? PHP에서 유니 코드의 올바른 문자를 얻으려면 어떻게해야합니까?

답변

4

정규식 :

$string = preg_replace('/%u([0-9A-F]+)/', '&#x$1;', $string)은 0-9 이후 자본 A-F의 문자를 비교합니다 의미 A-F있다. 모든 작은 문자가 일치하므로 실패합니다. 시도해보십시오.

$string = preg_replace('/%u([0-9a-f]+)/', '&#x$1;', $string); 

대신에보십시오.

브라우저 출력이 utf-8인지 확인하십시오. 당신이 헤더를 사용할 수없는 경우 : 출력

+0

이 좋은 답변 –

+0

있다가 작업 해 주셔서 감사합니다 이메일 브라우저와 이메일 Αθανασίου에서 Αθανασίου을 인쇄합니다 나를. –

+0

작동하지만 이메일 템플릿에 보낼 때 이메일에 제대로 표시되지 않습니다. –

1
<?php 
header('Content-type: text/html; charset=utf-8'); 

$string = '%u0391%u03b8%u03b1%u03bd%u03b1%u03c3%u03af%u03bf%u03c5'; 
$string = preg_replace('/%u([0-9a-f]+)/', '&#x$1;', $string); 

echo html_entity_decode($string, ENT_COMPAT, 'UTF-8'); 

$arr = [ 
'to_email' => '[email protected]', 
'from_email' => '[email protected]', 
'subject' => 'utf', 
'message' => $string 
]; 

mail_send($arr); 

function mail_send($arr) 
{ 
    if (!isset($arr['to_email'], $arr['from_email'], $arr['subject'], $arr['message'])) { 
     throw new HelperException('mail(); not all parameters provided.'); 
    } 

    $to   = empty($arr['to_name']) ? $arr['to_email'] : '"' . mb_encode_mimeheader($arr['to_name']) . '" <' . $arr['to_email'] . '>'; 
    $from  = empty($arr['from_name']) ? $arr['from_email'] : '"' . mb_encode_mimeheader($arr['from_name']) . '" <' . $arr['from_email'] . '>'; 

    $headers = array 
    (
     'MIME-Version: 1.0', 
     'Content-Type: text/html; charset="UTF-8";', 
     'Content-Transfer-Encoding: 7bit', 
     'Date: ' . date('r', $_SERVER['REQUEST_TIME']), 
     'Message-ID: <' . $_SERVER['REQUEST_TIME'] . md5($_SERVER['REQUEST_TIME']) . '@' . $_SERVER['SERVER_NAME'] . '>', 
     'From: ' . $from, 
     'Reply-To: ' . $from, 
     'Return-Path: ' . $from, 
     'X-Mailer: PHP v' . phpversion(), 
     'X-Originating-IP: ' . $_SERVER['SERVER_ADDR'], 
    ); 

    mail($to, '=?UTF-8?B?' . base64_encode($arr['subject']) . '?=', $arr['message'], implode("\n", $headers)); 
} 

을 울리는 전에

header('Content-type: text/html; charset=utf-8'); 

을이

+0

에 추가하셨습니다. vinaya-maheshwari hope it worked –

관련 문제