Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重音字符显示在文本文件中,但不显示在终端(osx)中_Php_Macos_Character Encoding - Fatal编程技术网

Php 重音字符显示在文本文件中,但不显示在终端(osx)中

Php 重音字符显示在文本文件中,但不显示在终端(osx)中,php,macos,character-encoding,Php,Macos,Character Encoding,我一直在努力从数据库中检索数据,我一直很难让重音字符显示出来(它们显示为?,我尝试了很多方法来实现这一点) 我只是尝试使用file\u put\u contents将数据放入一个文件,这意味着问题可能与终端本身有关,而不是与字符编码有关,除非我错了? 然后我尝试了file\u get\u contents读取带有正确重音字符的文件,但它仍然在终端中显示为? 有人知道我如何在终端中显示包含重音字符的数据吗?如果我尝试回显一个简单的é,它会完美地显示出来 谢谢 我的代码: <?php ini

我一直在努力从数据库中检索数据,我一直很难让重音字符显示出来(它们显示为
,我尝试了很多方法来实现这一点)

我只是尝试使用
file\u put\u contents
将数据放入一个文件,这意味着问题可能与终端本身有关,而不是与字符编码有关,除非我错了? 然后我尝试了
file\u get\u contents
读取带有正确重音字符的文件,但它仍然在终端中显示为

有人知道我如何在终端中显示包含重音字符的数据吗?如果我尝试回显一个简单的
é
,它会完美地显示出来

谢谢

我的代码:

<?php

ini_set('default_charset','utf-8');

header('Content-Type: text/html; charset=utf-8');

$username = "username";
$password = "password?";
$dsn = "dsn";

$connection = odbc_connect($dsn, $username, $password, SQL_CUR_USE_ODBC);

$sql = "SELECT \"Insert ID\", \"Date Created\", \"Date Modified\", Description FROM Insert";

$res = odbc_exec($connection,$sql);

$x=0;

while ($row = odbc_fetch_array($res)){

$x++;


   $values= ($x . ": " . " Insert ID:". $row['Insert ID'] . " Date Created: " . $row['Date Created'] . " Date Modified:" . $row['Date Modified'] . " Dscription:" . $row['Description'] . "\n");




   print($values);
}

odbc_free_result($res);

odbc_close($connection);

您的PHP文件很可能保存为ISO Latin 1或Mac OS Roman。将其更改为UTF-8,它应该可以工作。我刚刚在我的Mac电脑上试用过,它输出“特殊”字符没有问题:

<?php
//test.php
$data = 'é';

file_put_contents('./test.txt', $data);

$output = file_get_contents('./test.txt');

echo $output.PHP_EOL;

UTF-8“一路”完成了吗?我确实尝试了一些事情,比如utf8解码,并将其包含在我的标题中,如果这是你的意思,请看下面的问答-这将避免我键入所有内容,并将对其进行更详细的解释;-)你的脚本工作没有问题,它将正确显示。但是我自己的脚本仍然有问题,我确定它也是UTF-8。我刚刚意识到文本文件是Mac OS Roman的,所以现在当我导入文本文件时,它确实显示重音字符,你是对的。但问题是我不想将数据导入一个文本文件,然后再将其导入m终端,知道为什么它不会立即显示重音字符吗?@Exn:首先猜测不是所有文件都保存为UTF-8,或者您的DB列不是UTF-8。很难说没有看到一些代码……我在问题中添加了代码,我只能从odbc连接访问数据库。@Exn:你知道数据库列使用的是哪种编码吗?您是否尝试过utf8解码($row['Description'])
(假设重音字符所在的位置)?
 $ php test.php //outputs 'é'