json_encode 로 한글 문자 깨짐현상을 겪어보신 분들은 잘 아실듯 합니다.


편법으로 urlencode 나 base64_encode 로 문자열 처리한 후 다시 원상복구과정으로 처리합니다만 그러나 php 5.4 부터 지원하는 JSON_UNESCAPED_UNICODE 상수를 이용하면 번거롭게 편법을 하지 않아도 유니코드 문자열을 처리할 수 있게 되었습니다.


 <?php

 $arr = array('name' => "하보니입니다.");
$encode json_encode$arrJSON_UNESCAPED_UNICODE );
print_r($encode);
/*
    결과 : 
    {"name":"하보니입니다."}
*/

$decode json_decode$encode );
print_r($decode);
/*
    결과 : 
    stdClass Object
    (
        [name] => 하보니입니다.
    )
*/
?>


신고

PHP 5,3 부터 지원하는 openssl_encrypt 함수를 이용하면 문자열을 암호화, 복호화 함수를 만들 수 있습니다.

  <?php
function Encrypt($str$secret_key='secret key'$secret_iv='secret iv')
{
    
$key hash('sha256'$secret_key);
    
$iv substr(hash('sha256'$secret_iv), 032)    ;
    return 
str_replace("="""base64_encode( openssl_encrypt($str"AES-256-CBC"$key0$iv)) );
}

function 
Decrypt($str$secret_key='secret key'$secret_iv='secret iv')
{
    
$key hash('sha256'$secret_key);
    
$iv substr(hash('sha256'$secret_iv), 032);
    return 
openssl_decrypt( base64_decode($str), "AES-256-CBC"$key0$iv );
}

$str "안녕하세요. 하보니입니다.";
$secret_key "123456789";
$secret_iv "#@$%^&*()_+=-";

$encrypted Encrypt($str$secret_key$secret_iv);
echo 
"암호화 문자열 => " .$encrypted"<br />\n";
$decrypted Decrypt($encrypted$secret_key$secret_iv);
echo 
"복호화 문자열 => " .$decrypted"\n";

/*
    결과:
    암호화 문자열 => VUYxMHFQVWU5TG9KeWMrZlJhZjV3VkFJbTFHV DZERlhNeEpldW1GRVB0WjQyODdkRnFDTFhIa0UrWEEvb1VGbg
    복호화 문자열 => 안녕하세요. 하보니입니다.
*/
?>

신고