我正在开发一个需要日语和英语的php网站。在大多数地方我都可以正确地显示日语,但如果我使用这样的函数,我就无法显示这些字符:
echo.php:
<?php
function draw(){
echo "日本語";
}
draw();
?>
我得到“日本语”
但如果我试试这个: 的index.php:
<?php
some stuff
include "echo.php";
draw();
?>
我得到“???”。 我有没有办法让我的echo文件以一种可以读取它的方式将数据发送到第一个文件?
编辑: 该网站正常工作,并正确显示日文字符,除非它试图从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并调用它:出现英文链接,但是日语链接显示为问号。
答案 0 :(得分:8)
您应该将文件编码更改为UTF-8,并将网站上的标题设置为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');
答案 1 :(得分:3)
你的问题肯定与character encoding有关。请尝试检查以下内容:
utf8_encode()
和/或utf8_decode()
强制在字符串上使用UTF-8。Accept-Charset: UTF-8,*;q=0.5
请求中发送GET
来暗示它的Unicode功能。最后,我已经使用PHP 5.3.6版以及Firefox,Chrome和IE 9检查了您的代码.Firefox和Chrome按预期打印了日文字符。只有IE 9才能正确打印。窥探来自IE的GET
请求显示,它确实没有发送任何Accept-Charset: UTF-8,*;q=0.5
。我不完全确定如何强制IE发送,因为在我的情况下,显然我的服务器(Apache)与PHP一起肯定是发回UTF-8字符串。
还有一个提示 - 您可以尝试将字符串转换为HTML entities。例如 - echo "©";
会打印©
。但是,我不是100%确定如何使用PHP将所有字符串转换为HTML实体。我使用htmlentities()
和htmlspecialchars()
尝试失败。但是,它没有改变IE的任何内容。
答案 2 :(得分:2)
将“echo.php”的编码转换为EUC-JP或SHIFT-JIS。
<?php
function draw(){
echo mb_convert_encoding("日本語", 'UTF-8', array('EUC-JP', 'SHIFT-JIS', 'AUTO'));
}
draw();
?>
这对我有用:)
答案 3 :(得分:1)
charset
未定义或不正确时会发生这种情况。您可以使用元标记来定义字符集。根据需要在页面的头部放置以下元标记,它将被正确呈现。
HTML 4
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
HTML 5
<meta charset="utf-8" />
答案 4 :(得分:0)
将以下元标记添加到标题
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta http-equiv="Content-Language" content="ja" />
答案 5 :(得分:0)
MySQL和PHP需要处理相同的字符集。
尝试添加..
mysqli_set_charset("utf8");
..连接到您的数据库后。永远都适合我!
答案 6 :(得分:0)
如果您使用的是php和mssql,则还需要在mssql连接字符串中指定characterset。
像这样:
$connectionInfo = array("Database"=>"db name", "UID"=>"username", "PWD"=>"pw","CharacterSet" => "UTF-8");
$serverName = "server";
$conn = sqlsrv_connect($serverName, $connectionInfo);
请注意,您仍需要执行上述建议 声明你的html charset就像这个HTML 5:
<meta charset="utf-8" />
像这样的php charset:
header('content-type: text/html; charset=utf-8');