如何将多个文本文件从改为 utf8-no-bom?

如何将多个文本文件从改为 utf8-no-bom?

我想将大量文本文件 (40+) 从 ISO-Latin-1 转换为 UTF8-no-bom。我该如何实现?

答案1

堆栈溢出

  • 您可以从 GnuWin32 获取 iconv 之类的工具,
    运行批处理脚本来以这种方式处理所有文件。
    
    但是它们现在是什么编码?如果是 ANSI,
    并且您没有使用任何值为 => 128 的字节,
    那么它们已经是无BOM的UTF-8了。
    也许你可以用它来缩小
    你需要处理的文件——可能你只有一个
    需要转换的文件很少(并且可能更愿意单独进行转换)。
  • 实际上,我是使用 Notepad++ 来完成的。
    在尝试此操作之前,您必须备份您的文件。
    您需要创建一个执行此操作的宏:
    
    
    1. 将当前打开的文件转换为UTF-8 w/o BOM;
    2. 选择文件中的所有文本,然后复制 (为什么?这看起来像是一个错误。如果你不这样做, 您的文件将被替换为您当前的剪贴板内容...);
    3. 保存当前文件;
    4. 关闭当前文件。
    5. 保存此宏。
    现在,打开你的PHP文件,然后使用“运行多个宏”运行它 次...”命令。如果你打开了 100 个文件,就让它运行 100 次。

答案2

<?php
$url = getenv("服务器地址");
//$url = 获取环境 (HTTP_POST_VARS);
$rootdir='d:\\xampp\\htdocs\\ecoder';
$目录="。";
$文件=scan_dir($rootdir);
  foreach ($files 作为 $file) {
    $信息 = 路径信息($文件);
    $extF =$info["扩展名"];
    如果 ($extF == "php" || $extF == "txt" || $extF == "js" || $extF == "css") {
     回显$file。“ 
”; $数据 = file_get_contents($文件); 写入UTF8文件($文件,$数据); echo $file.' 被转换为 UTF8
'; } } //使用此函数获取目录内的所有文件(包括子目录) 函数 scan_dir($dir) { $arr文件 = 数组(); 如果(is_dir($dir)){ 如果 ($handle = opendir($dir)) { 更改目录($dir); while (false !== ($file = readdir($handle))) { 如果 ($file != "." && $file != "..") { 如果(is_dir($file)){ $arr = scan_Dir($文件); foreach ($arr 作为 $value) { $arrfiles[] = $dir."/".$value; } } 别的 { $arrfiles[] = $dir."/".$file; } } } 更改目录(“../”); } closedir($handle); } 返回$arrfiles; } function writeUTF8File($filename,$content) { //将文件转换为 UTF8 $f=fopen($文件名,"w"); # 现在 UTF-8 - 添加字节顺序标记 fwrite($f,pack("CCC",0xef,0xbb,0xbf)); fwrite($f,$内容); fclose($f); } >

相关内容