UTF-16にエンコードされている文字列をUTF-8へデコード
2024/03/04
エンコードされている文字列であまり見かけない感じのものがあった。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;//テストと表示される。
参考サイト
関連記事
-
-
PHPMailerでエラーメッセージを日本語で出力する方法
PHPMailerのGitHubページを見ていると言語設定についての案内を見つけ ...
-
-
PHPMailerでエラーメッセージ及びデバッグログの表示方法について
PHPMailerでエラーメッセージ及びデバッグログを表示させたいというケースが ...
-
-
MySQLのバックアップファイルを簡単に作成できるライブラリ「myphp-backup」の利用方法
MySQLのバックアップを取る際にadminerとかから手動で対応するのではなく ...
-
-
PHP8系で「Uncaught TypeError: Unsupported operand types」エラー対応方法
PHP8系で「Fatal error: Uncaught TypeError: ...
-
-
PHPのhash_file関数でファイルの改ざんを検知する方法
サイト内の特定の数ページのみ簡易的なものでも良いので自動でファイルの改ざんチェッ ...