如何在php中设置正确的输出编码

时间:2017-03-27 09:04:21

标签: php html

我有php编码的问题。

我的php文件是UTF-8编码的

但是每个php函数都会对编码做错:

ex:在我的剧本中我可以写:

void foo(alignas(sizeof(int)) void* a) { ... }

这就是我得到的:

echo 'zażółć gęślą jaźń';
echo strtolower('zażółć gęślą jaźń');

无论我做什么,我使用什么编码。

我确信它可以设置在某个地方。

php.ini中的

default_charset设置为UTF-8

非常感谢任何帮助

3 个答案:

答案 0 :(得分:0)

$text = 'zażółć gęślą jaźń';

如果您尝试使用此mb_strtolower($text, 'UTF-8');

答案 1 :(得分:0)

测试此

<?php

$data = 'zażółć gęślą jaźń'

header('Content-Type: application/json; charset=UTF-8'); 
print json_encode($data, JSON_UNESCAPED_UNICODE);

?>

OR

<?php

$data = 'zażółć gęślą jaźń'

header('Content-Type: application/json; charset=UTF-8'); 
print $data;

?>

希望这对你有所帮助。

答案 2 :(得分:0)

来自我的POV的一些输入: 我的localhost 5.5.6上的phpinfo()用于default_charset:

`|  Directive  Local  |  Value      |   Master Value   |    
 |  default_charset   |  no value   |   no value       |`

php.ini文件:

; By default, PHP will output a character encoding using
; the Content-type: header.  To disable sending of the charset, simply
; set it to be empty.
;
; PHP's built-in default is text/html
; http://php.net/default-mimetype
default_mimetype="text/html"

; PHP's default character set is set to empty.
; http://php.net/default-charset
;default_charset = "UTF-8"

代码:

e<?php
$text = 'zażółć gęślą jaźń';
?>

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>Format using a different meta charset</title>
</head>

<body>
<?php echo mb_strtolower($text).'<br />'; ?>
<?php echo $text.'<br />'; ?>
<?php echo strtolower($text).'<br />'; ?>
<?php echo mb_strtolower('zażółć gęślą jaźń').'<br />'; ?>
<?php echo strtolower('zażółć gęślą jaźń').'<br />'; ?>
<?php echo mb_strtolower($text, 'UTF-8'); ?>
</body>

</html>

结果:

mb_strtolower($ text) - za���� g��l� ja��

$ text - zażółć gęślą jaźń

strtolower($ text) - zażółć gęślą jaźń

mb_strtolower('zażółćgęśląjaźń') - za���� g��l� ja��

strtolower('zażółćgęśląjaźń') - zażółć gęślą jaźń

mb_strtolower($ text,'UTF-8') - zażółć gęślą jaźń