この関数で取得した名前の UTF8 バージョンを取得するために行ったことがありますが、何らかの理由で正しい文字で出力されません。
出力例:
ѕqÃ…ιÑÂтℓє
期待される出力:
ѕqυιятℓє
ファイル、file_get_contents から取得された文字列、関数の出力、およびソース XML ファイルに対して文字セット チェックを実行しました。MySQL も正しいバージョンを取得しません。
また、SimpleXML は UTF-8 をサポートしています。
sudo ファイル -i debug.txt
debug.txt: txt/plain; charset=utf-8
MySQL照合
utf8_general_ci
ソース XML ファイルのヘッダー:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
これは(コードに2回あります)-
$enc = mb_detect_encoding($xml, 'UTF-8', true);
echo 'Detected encoding '.$enc;
出力:
Detected encoding UTF-8
Detected encoding UTF-8
他にどこで UTF-8 文字セットを確認すればよいのか、それが最初に必要なのかどうかはわかりません。ここの誰かが、期待されるバージョンの名前を取得する方法を知っていることを願っています。ありがとうございます。
TextFile (ログ) 出力関数:
function log_output($message){
$file = 'debug.txt';
$current = file_get_contents($file);
$current .= $message."\n";
file_put_contents($file, $current);
}
ソースコード:
// Converts SteamID(64) to the users current name on Steam.
function steamid64_to_name($steamid64) {
// Get User Profile Data
$xml = file_get_contents('http://steamcommunity.com/profiles/'.$steamid64.'/?xml=1');
$enc = mb_detect_encoding($xml, 'UTF-8', true);
echo 'Detected encoding '.$enc;
$xml = simplexml_load_string($xml, null, LIBXML_NOCDATA);
if(!empty($xml)) {
if(isset($xml->steamID)) {
$username = $xml->steamID;// Example: steamcommunity.com/profiles/76561198077095013/?xml=1
} else {
$username = "Username Not Found";
}
} else {
$username = "User XML Not Found"; // Example: steamcommunity.com/profiles/0/?xml=1
}
$enc = mb_detect_encoding($xml, 'UTF-8', true);
echo 'Detected encoding '.$enc;
return $username;
}