php将文件转换为utf-8编码,如何在php中将文件转换为UTF-8?

这篇博客介绍了如何检测和转换非UTF-8编码的文本文件。通过使用`mb_detect_encoding`和`iconv`函数,作者展示了在PHP中将非UTF-8编码的行转换为UTF-8的过程。文章还提到了`neatify_files`函数,用于整理`$_FILES`数组,以及在上传文件时的安全注意事项。
摘要由CSDN通过智能技术生成

试试吧.

我使用的示例是我在测试环境中所做的事情,您可能需要稍微更改代码.

我有一个包含以下数据的文本文件:

test

café

áÁÁÁááá

žžœš¥±

ÆÆÖÖÖasØØ

ß

然后我有一个输入文件的表单并执行以下代码:

function neatify_files(&$files) {

$tmp = array();

for ($i = 0; $i < count($_FILES); $i++) {

for ($j = 0; $j < count($_FILES[array_keys($_FILES)[$i]]["name"]); $j++) {

$tmp[array_keys($_FILES)[$i]][$j]["name"] = $_FILES[array_keys($_FILES)[$i]]["name"][$j];

$tmp[array_keys($_FILES)[$i]][$j]["type"] = $_FILES[array_keys($_FILES)[$i]]["type"][$j];

$tmp[array_keys($_FILES)[$i]][$j]["tmp_name"] = $_FILES[array_keys($_FILES)[$i]]["tmp_name"][$j];

$tmp[array_keys($_FILES)[$i]][$j]["error"] = $_FILES[array_keys($_FILES)[$i]]["error"][$j];

$tmp[array_keys($_FILES)[$i]][$j]["size"] = $_FILES[array_keys($_FILES)[$i]]["size"][$j];

}

}

return $files = $tmp;

}

if (isset($_POST["submit"])) {

neatify_files($_FILES);

$file = $_FILES["file"][0];

$handle = fopen($file["tmp_name"], "r");

while ($line = fgets($handle)) {

$enc = mb_detect_encoding($line, "UTF-8", true);

if (strtolower($enc) != "utf-8") {

echo "

" . (iconv($enc, "UTF-8", $line)) . "

";

} else {

echo "

$line

";

}

}

}

?>

" method="POST" enctype="multipart/form-data">

我写的函数neatify_files是为了使$_FILES数组的布局更符合逻辑.

表单是一种标准表单,只是将数据POST到服务器.

注意:使用$_SERVER [“PHP_SELF”]是一个安全风险,see here for more.

发布数据时,我将文件存储在变量中.显然,如果你使用的是multiple属性,那么你的代码就不会像这样了.

$handle以只读格式存储文本文件的全部内容;因此是“r”的论点.

$enc使用mb_detect_encoding函数来检测编码(duh).

起初我无法获得正确的编码.将encoding_list设置为仅使用UTF-8,并将strict设置为true.

如果编码是UTF-8,那么我只是打印该行,如果没有,我使用iconv函数将其转换为UTF-8.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值