勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ

UTF-16にエンコードされている文字列をUTF-8へデコード

   2024/03/04  PHP

エンコードされている文字列であまり見かけない感じのものがあった。UTF-8やShift-JIS、EUC-JPではなく、色々調べるとUTF-16でエンコードされていた。以下でUTF-8にデコードできた。

 

ソースコード

<?php
$body = '\u30c6\u30b9\u30c8';
$decoded = preg_replace_callback(
    '|\\\\u([0-9a-f]{4})|i', 
    function($matched){
        return mb_convert_encoding(pack('H*', $matched[1]), 'UTF-8', 'UTF-16');
    }, 
    $body
);
echo $decoded;//テストと表示される。

 

参考サイト

http://kanonji.info/blog/2014/07/09/php%E3%81%A7unicode%E3%82%A8%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%97%E3%82%B7%E3%83%BC%E3%82%B1%E3%83%B3%E3%82%B9%E3%82%92%E3%83%87%E3%82%B3%E3%83%BC%E3%83%89%E3%81%99%E3%82%8B/

 - PHP

  関連記事

PHPにて指定した期間内の日付を1日ずつループで出力する方法
PHPにて指定した期間内の日付を1日ずつループで出力する方法

PHPにて開始日と終了日をユーザが入力すると、その期間内の日付をYYYY-MM- ...

複数(PHP / metaタグ / htaccess)の方法で301リダイレクト
複数(PHP / metaタグ / htaccess)の方法で301リダイレクト

サイトのディレクトリやファイル名を大幅に変えるという案件があった。それ自体は問題 ...

PHPでCSVを簡単に取り扱える「LeagueCSV(thephpleague / csv)」の利用方法
PHPでCSVを簡単に取り扱える「LeagueCSV(thephpleague / csv)」の利用方法

PHPでCSVファイルの書き込みや読み込みを行う際、バニラPHPで対応していたが ...

PHPでメルマガを配信する方法(BCCで一括送信するパターン)
PHPでメルマガを配信する方法(BCCで一括送信するパターン)

PHPでメールマガジンを配信したかった。宛先のメールアドレスはMySQLに保存さ ...

PHPでデータをファイルキャッシュさせる(Cache_Lite)
PHPでデータをファイルキャッシュさせる(Cache_Lite)

最近携わった案件でPHPでファイルキャッシュをしているシステムがあった。今までフ ...