Удалите порядок байтов Mark из файла. ReadAllBytes (байт [])

Чтобы ваш веб-сервер не обменивался данными по URL-адресу: не помещайте файл в каталог, который ваш веб-сервер настроен для публикации по HTTP.

Затем, если вам нужен доступ к этому файлу из PHP (как ваш предыдущий вопрос говорит, что вы хотите ), используйте либо относительный путь к каталогу (который начинается с ../, чтобы перейти в каталог), либо абсолютный путь (например, /var/secret_node_code/app.js) для доступа к нему.

14
задан JC Grubbs 13 November 2008 в 20:12
поделиться

4 ответа

Иначе, принимая UTF-8 к ASCII.

File.WriteAllText(filename, File.ReadAllText(filename, Encoding.UTF8), Encoding.ASCII);
1
ответ дан 1 December 2019 в 13:34
поделиться

Подробно останавливаясь на комментарии Jon с образцом.

var name = GetFileName();
var bytes = System.IO.File.ReadAllBytes(name);
System.IO.File.WriteAllBytes(name, bytes.Skip(3).ToArray());
8
ответ дан 1 December 2019 в 13:34
поделиться
var text = File.ReadAllText(args.SourceFileName);
var streamWriter = new StreamWriter(args.DestFileName, args.Append, new UTF8Encoding(false));
streamWriter.Write(text);
streamWriter.Close();
3
ответ дан 1 December 2019 в 13:34
поделиться

Расширение образца JaredPar для рекурсии по подкаталогам:

using System.Linq;
using System.IO;
namespace BomRemover
{
    /// <summary>
    /// Remove UTF-8 BOM (EF BB BF) of all *.php files in current & sub-directories.
    /// </summary>
    class Program
    {
        private static void removeBoms(string filePattern, string directory)
        {
            foreach (string filename in Directory.GetFiles(directory, file  Pattern))
            {
                var bytes = System.IO.File.ReadAllBytes(filename);
                if(bytes.Length > 2 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF)
                {
                    System.IO.File.WriteAllBytes(filename, bytes.Skip(3).ToArray()); 
                }
            }
            foreach (string subDirectory in Directory.GetDirectories(directory))
            {
                removeBoms(filePattern, subDirectory);
            }
        }
        static void Main(string[] args)
        {
            string filePattern = "*.php";
            string startDirectory = Directory.GetCurrentDirectory();
            removeBoms(filePattern, startDirectory);            
        }       
    }
}

Мне понадобился этот фрагмент кода C # после того, как я обнаружил, что спецификация UTF-8 повреждает файл, когда вы пытаетесь выполнить базовую загрузку PHP файл.

6
ответ дан 1 December 2019 в 13:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: