如何阅读UTF8+;是否使用PHP创建BOM表文件,而不将BOM表显示为内容?
问题说的差不多。我已经找到了很多关于文本读入后如何去除字节顺序标记的建议,但这似乎是错误的。在这种语言中,是否有一种标准的方法可以正确识别和处理BOM并读取Unicode文件?没有。你必须手动操作 BOM是UTF-16LE和UTF-16BE编码中的信令字节顺序的一部分,因此UTF-16解码器自动删除BOM是有意义的(许多解码器都是这样做的) 然而,UTF-8始终具有相同的字节顺序,并且旨在实现ASCII兼容性,因此从未设想将BOM作为指定的编码方案的一部分,因此实际上,它不应该接受UTF-8解码器的任何特殊处理如何阅读UTF8+;是否使用PHP创建BOM表文件,而不将BOM表显示为内容?,php,unicode,utf-8,Php,Unicode,Utf 8,问题说的差不多。我已经找到了很多关于文本读入后如何去除字节顺序标记的建议,但这似乎是错误的。在这种语言中,是否有一种标准的方法可以正确识别和处理BOM并读取Unicode文件?没有。你必须手动操作 BOM是UTF-16LE和UTF-16BE编码中的信令字节顺序的一部分,因此UTF-16解码器自动删除BOM是有意义的(许多解码器都是这样做的) 然而,UTF-8始终具有相同的字节顺序,并且旨在实现ASCII兼容性,因此从未设想将BOM作为指定的编码方案的一部分,因此实际上,它不应该接受UTF-8解码
UTF-8人造BOM不是编码的一部分,而是一些(主要是Microsoft)应用程序用来表示文件可能是UTF-8的一个特殊(且有点争议)标记。它本身并不是一个标准,所以基于UTF-8的规范,如XML和JSON,必须对其进行特殊处理。不。你必须手动操作 BOM是UTF-16LE和UTF-16BE编码中的信令字节顺序的一部分,因此UTF-16解码器自动删除BOM是有意义的(许多解码器都是这样做的) 然而,UTF-8始终具有相同的字节顺序,并且旨在实现ASCII兼容性,因此从未设想将BOM作为指定的编码方案的一部分,因此实际上,它不应该接受UTF-8解码器的任何特殊处理
UTF-8人造BOM不是编码的一部分,而是一些(主要是Microsoft)应用程序用来表示文件可能是UTF-8的一个特殊(且有点争议)标记。它本身并不是一个标准,因此基于UTF-8的规范,如XML和JSON,必须对其进行特殊处理。也有同样的问题。我的函数_fread()将删除bom表并解决问题 给我的问题
/**
* Read local file
* @param file local filename
* @return Data from file, or false on failure
*/
function _fread ($file = null) {
if ( is_readable($file) ) {
if ( !($fh = fopen($file, 'r')) ) return false;
$data = fread($fh, filesize($file));
// remove bom
$bom = pack('H*','EFBBBF');
$data = preg_replace("/^$bom/", '', $data);
fclose($fh);
return $data;
}
return false;
}
我也有同样的问题。我的函数_fread()将删除bom表并解决问题 给我的问题
/**
* Read local file
* @param file local filename
* @return Data from file, or false on failure
*/
function _fread ($file = null) {
if ( is_readable($file) ) {
if ( !($fh = fopen($file, 'r')) ) return false;
$data = fread($fh, filesize($file));
// remove bom
$bom = pack('H*','EFBBBF');
$data = preg_replace("/^$bom/", '', $data);
fclose($fh);
return $data;
}
return false;
}