7

私は日本語と英語の両方を必要とするphpサイトに取り組んでいます。ほとんどの場所で、日本語を正しく表示するのに問題はありませんが、次のような関数を使用すると、文字を表示できません。

echo.php:

<?php
function draw(){
echo "日本語";
}
draw();
?>

「日本語」がもらえる

しかし、これを試してみると:index.php:

<?php
 some stuff
 include "echo.php";
 draw();
?>

「???」が表示されます。エコーファイルを取得して、データを読み取ることができる方法で最初のファイルにデータを送信する方法はありますか?

編集:ウェブサイトは機能し、phpファイルから関数をプルしようとする場合を除いて、日本語の文字を正しく表示します。コードは次のとおりです。

<html lang="ja">
<head>  
<title>Running Projects</title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body>
<div id="header">
<? php include "layout.php" ?>
</div>
</body>
</html>

layout.phpがリンクのリストを含む単なるファイルである場合、リンクがすべてのページにあるように、各ページにこれがあります。別の部分として、functions.phpを使用してデータベースからデータを取得し、それをページに書き込む必要があるため、layout.phpをfunctions.phpに入れて呼び出してみました。英語のリンクが表示されましたが、日本語のリンクが疑問符として表示されました。

4

7 に答える 7

8

ファイルのエンコーディングをUTF-8に変更し、WebサイトのヘッダーをUTF-8に設定する必要があります。

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

HTML5では、次を使用する必要があります。

<meta charset="utf-8" /> 

またはphpで

header('content-type: text/html; charset=utf-8');
于 2012-04-04T07:29:53.443 に答える
3

あなたの問題は間違いなく文字エンコーディングと関係があります。次のことを確認してください。

  • すべてのPHPスクリプトのすべての文字列はUnicodeです(UTF-8は非常に一般的な選択です)。必要に応じて、ストリングにUTF-8を強制的に使用utf8_encode()および/または強制します。utf8_decode()
  • サーバーはPHP出力をUnicodeとして送信します(UTF-8、できればgzip圧縮されたデータ)
  • ブラウザはUnicode(UTF-8)を理解して受け入れます。通常、ブラウザは、 Unicode機能を示唆するリクエストを送信Accept-Charset: UTF-8,*;q=0.5します。GET

最後に、PHPバージョン5.3.6とFirefox、Chrome、IE 9でコードを確認しました。FirefoxとChromeは、期待どおりに日本語の文字を出力します。正しく印刷されないのはIE9だけです。IEからのリクエストをスヌーピングすると、GET実際には何も送信されていないことがわかりますAccept-Charset: UTF-8,*;q=0.5。私の場合、明らかに私のサーバー(Apache)とPHPがUTF-8文字列を確実に送り返していたため、IEにそれを強制的に送信させる方法が完全にはわかりません。

もう1つのヒント-文字列をHTMLエンティティに変換してみてください。たとえば、-echo "&#x00A9;";はを出力します©。しかし、PHPを使用してすべての文字列をHTMLエンティティに変換する方法が100%わかりません。とを試してみましたが失敗しましhtmlentities()htmlspecialchars()。しかし、IEでは何も変わりませんでした。

于 2012-04-04T08:55:14.317 に答える
2

私は同じ問題を抱えています。しかし、私はそれを処理します。

「echo.php」のエンコーディングをEUC-JPまたはSHIFT-JISに変換します。

<?php
function draw(){
echo mb_convert_encoding("日本語", 'UTF-8', array('EUC-JP', 'SHIFT-JIS', 'AUTO'));
}
draw();
?>

これは私のために働きます:)

于 2013-07-03T03:58:08.923 に答える
1

これは、charsetが定義されていないか、正しくない場合に発生します。

メタタグを使用して文字セットを定義できます。必要に応じて、ページのヘッドセクションに次のメタタグを配置すると、正しくレンダリングされます。

HTML 4

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

HTML 5

<meta charset="utf-8" />
于 2012-04-04T07:38:55.520 に答える
0

以下のメタタグをヘッダーに追加します

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta http-equiv="Content-Language" content="ja" />
于 2012-04-04T07:36:44.283 に答える
0

MySQLとPHPは同じ文字セットを処理する必要があります。

追加してみてください..

mysqli_set_charset("utf8");

..データベースに接続した後。いつも私のために働きます!

于 2014-05-29T00:55:49.010 に答える
0

phpとmssqlを使用している場合は、mssql接続文字列で文字セットも指定する必要があります。

このような:

$connectionInfo = array("Database"=>"db name", "UID"=>"username", "PWD"=>"pw","CharacterSet" => "UTF-8");
$serverName = "server";
$conn = sqlsrv_connect($serverName, $connectionInfo);

上記で提案されていることを行う必要があることに注意してください。HTML文字セットを次のHTML5のように宣言します。

<meta charset="utf-8" />

このようなphp文字セット:

header('content-type: text/html; charset=utf-8');
于 2018-03-30T16:50:19.973 に答える