原理:
使用 mb_detect_encoding() 函数来判断字符串是什么编码的。
注意:要把php.ini中 extension=php_mbstring.dll 前的;号去掉,重启apache就可以了。
我创建三个文件:text1.txt text2.txt text3.txt
分别以ASCII UTF-8 UNICODE 的编码方式保存
代码如下:
<?php
define ('UTF32_BIG_ENDIAN_BOM' , chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF));
define ('UTF32_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00));
define ('UTF16_BIG_ENDIAN_BOM' , chr(0xFE) . chr(0xFF));
define ('UTF16_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE));
define ('UTF8_BOM' , chr(0xEF) . chr(0xBB) . chr(0xBF));
function detect_utf_encoding($text) {
$first2 = substr($text, 0, 2);
$first3 = substr($text, 0, 3);
$first4 = substr($text, 0, 3);
if ($first3 == UTF8_BOM) return 'UTF-8';
elseif ($first4 == UTF32_BIG_ENDIAN_BOM) return 'UTF-32BE';
elseif ($first4 == UTF32_LITTLE_ENDIAN_BOM) return 'UTF-32LE';
elseif ($first2 == UTF16_BIG_ENDIAN_BOM) return 'UTF-16BE';
elseif ($first2 == UTF16_LITTLE_ENDIAN_BOM) return 'UTF-16LE';
}
function getFileEncoding($str){
$encoding=mb_detect_encoding($str);
if(empty($encoding)){
$encoding=detect_utf_encoding($str);
}
return $encoding;
}
$file = 'text1.txt';
echo getFileEncoding(file_get_contents($file)); // 输出ASCII
echo '<br />';
$file = 'text2.txt';
echo getFileEncoding(file_get_contents($file)); // 输出UTF-8
echo '<br />';
$file = 'text3.txt';
echo getFileEncoding(file_get_contents($file)); // 输出UTF-16LE
echo '<br />';
?>
分享到:
相关推荐
`iconv`函数则是另一个用于字符串编码转换的工具,其语法如下: ```php string iconv ( string $in_charset , string $out_charset , string $str ) ``` - `$in_charset`: 输入字符串的编码。 - `$out_charset`: ...
`mb_detect_encoding`是PHP中的一个多字节字符串函数,用于检测字符串的编码方式。它支持多种常见的字符集,如UTF-8、GBK等。此函数对于处理多语言环境下的字符串非常有用,尤其是在需要确保字符串能够正确显示或...
在PHP编程中,字符串编码转换是一项重要的任务,尤其是在处理多国语言或者从不同源获取数据时。本篇文章将深入探讨如何在PHP中进行字符串编码转换,并特别关注如何自动识别源编码。我们将分析提供的`array_iconv`...
如果源编码没有提供或设置为"auto",mb_convert_encoding()会使用mb_detect_encoding()来自动检测字符串的编码。在上述代码片段中,一旦检测到$data不是UTF-8编码,它就会使用mb_convert_encoding()进行转换。 通过...
`mb_detect_encoding` 是PHP提供的一种用于检测字符串编码的函数,可以帮助我们识别字符串的编码格式。下面我们将详细讨论如何使用PHP和`mb_detect_encoding`来判断网页是否是UTF-8编码,并进行相应的转换。 首先,...
开发者可能需要了解PHP的基础语法,如文件操作函数(`fopen()`, `fread()`, `fwrite()`, `fclose()`),字符串处理函数(`mb_detect_encoding()`, `iconv()`或`mb_convert_encoding()`)等,来理解这个工具的工作...
PHP字符串编码问题是许多使用PHP进行开发的程序员都会遇到的问题,特别是当处理多种语言文本时。在PHP中,不同的字符编码代表着不同的内存占用和处理方式,尤其UTF-8和GBK这两种编码,UTF-8编码的中文字符通常占用3...
- **编码检测**:有时文件或数据来源未指定编码,需要通过检测方法(如`mb_detect_encoding()`)来猜测正确的编码。 - **特殊字符处理**:Unicode包含了各种语言和特殊符号,处理这些字符时需要考虑其编码特性。 - *...
// 自动检测字符串编码 } $length = mb_strlen($string, $encoding); // 获取字符串长度 $reversed = ''; // 初始化反向字符串 // 从后向前遍历字符串并添加到新字符串 while ($length-- > 0) { $...
在PHP中,有一个内置的`mb_detect_encoding`函数用于检测字符串的编码,但在某些情况下,这个函数可能无法准确地工作。在给出的描述中,作者提到在自己的环境中`mb_detect_encoding`没有产生预期的结果,因此编写了...
- 检测字符串编码:`mb_detect_encoding($string)` - 转换字符串编码:`mb_convert_encoding($string, 'UTF-8', 'auto')` - 字符串截取:`mb_substr($string, 0, 10, 'UTF-8')` - 字符串长度:`mb_strlen($...
可以使用mb_detect_encoding函数检测字符串的编码: ```php $encoding = mb_detect_encoding($string, ['UTF-8', 'GBK'], true); ``` 总结,通过使用PHPExcel库和PHP内置的fputcsv函数,我们可以方便地将数据导出...
然而,正确地识别文件编码并非易事,因为不同的文本编辑器或操作系统可能会以不同的方式保存文件编码。这篇文章介绍了如何使用PHP检测和读取文件编码的方法,这些方法能够帮助开发人员在处理文本文件时,确保数据的...
iconv函数是PHP中用于字符串编码转换的函数,其基本用法是iconv($input_encoding, $output_encoding, $string),其中$input_encoding是原编码格式,$output_encoding是目标编码格式,而$string是要转换的字符串内容...
这个函数可以检测字符串的编码方式,并且与`mbstring`扩展配合,能够提供较好的准确性: ```php function mb_is_utf8($string) { return mb_detect_encoding($string, 'UTF-8') === 'UTF-8'; } ``` 最后一种方法...
在上述代码片段中,我们定义了一个名为detect_encoding的函数,它接受两个参数:需要转换的文字字符串和目标编码。函数首先使用正则表达式来检测字符串是否为UTF-8编码,如果是,则根据传入的目标编码参数,决定是否...
在实际开发中,除了手动指定编码转换外,有时还需要自动检测输入字符串的编码,这时可以使用`mb_detect_encoding()`函数来检测字符串的编码,再进行相应的转换。 总之,理解各种字符编码和PHP提供的编码转换函数是...
PHP提供了`mb_detect_encoding`函数来检测字符串的编码,但这个函数在某些情况下可能不够准确。因此,我们可以手动检查BOM来确定编码类型: ```php define('UTF32_BIG_ENDIAN_BOM', chr(0x00) . chr(0x00) . chr(0...
为了提高判断的准确性,可以考虑结合其他方法,如`mb_detect_encoding`函数,它提供了更丰富的编码检测选项。 总之,PHP中的文本编码判断是一个复杂的过程,但通过`iconv`函数可以实现基本的检测。在实际开发中,...