javascript

java

python

c#

android

node.js

c++

reactjs

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

php-如何删除多个UTF-8 BOM序列

使用PHP5(cgi)从文件系统输出模板文件,并出现吐出原始HTML的问题。

private function fetch($name) {
    $path = $this->j->config['template_path'] . $name . '.html';
    if (!file_exists($path)) {
        dbgerror('Could not find the template "' . $name . '" in ' . $path);
    }
    $f = fopen($path, 'r');
    $t = fread($f, filesize($path));
    fclose($f);
    if (substr($t, 0, 3) == b'\xef\xbb\xbf') {
        $t = substr($t, 3);
    }
    return $t;
}

即使我添加了BOM修复程序,但Firefox接受它仍存在问题。 您可以在此处查看实时副本:[http://ircb.in/jisti/](以及要检出的模板文件,我将其放在[http://ircb.in/jisti/home.html]中) )

任何想法如何解决这个问题? o_o

trans by 2020-02-14T06:36:13Z

c#-创建没有BOM的文本文件

我尝试这种方法没有成功

我正在使用的代码:

// File name
String filename = String.Format("{0:ddMMyyHHmm}", dtFileCreated);
String filePath = Path.Combine(Server.MapPath("App_Data"), filename + ".txt");

// Process       
myObject pbs = new myObject();         
pbs.GenerateFile();

// pbs.GeneratedFile is a StringBuilder object

// Save file
Encoding utf8WithoutBom = new UTF8Encoding(true);
TextWriter tw = new StreamWriter(filePath, false, utf8WithoutBom);
foreach (string s in pbs.GeneratedFile.ToArray()) 
    tw.WriteLine(s);
tw.Close();

// Push Generated File into Client
Response.Clear();
Response.ContentType = "application/vnd.text";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + ".txt");
Response.TransmitFile(filePath);
Response.End();

结果:

enter image description here

无论如何,它都在编写BOM表和特殊字符(例如ÆØÅ)不正确:-/

我被卡住了!

我的目标是使用UTF-8作为编码和8859-1作为CharSet创建文件

这很难做到吗,还是我今天过得不好?

非常感谢所有帮助,谢谢!

trans by 2020-01-24T22:01:27Z

utf 8-在Python中将没有BOM的UTF-8转换为带有BOM的UTF-8

这里有两个问题。 我有一组通常是带有BOM的UTF-8文件。 我想将它们(理想情况下)转换为没有BOM的UTF-8。 好像codecs.StreamRecoder(stream, encode, decode, Reader, Writer, errors)可以解决这个问题。 但是我真的看不到任何有关用法的好例子。 这将是处理此问题的最佳方法吗?

source files:
Tue Jan 17$ file brh-m-157.json 
brh-m-157.json: UTF-8 Unicode (with BOM) text

同样,如果我们能够处理清楚知道的不同输入编码(看到的ASCII和UTF-16),那将是理想的。 看来这一切都是可行的。 是否有一种解决方案可以采用任何已知的Python编码并以UTF-8格式输出而无需BOM?

从下面编辑1个建议的sol'n(谢谢!)

fp = open('brh-m-157.json','rw')
s = fp.read()
u = s.decode('utf-8-sig')
s = u.encode('utf-8')
print fp.encoding  
fp.write(s)

这给了我以下错误:

IOError: [Errno 9] Bad file descriptor

新闻快讯

有人在评论中告诉我,错误是我以'rw'模式而不是'r +'/'r + b'模式打开文件,因此我最终应重新编辑问题并删除已解决的部分。

trans by 2019-10-15T07:42:44Z

utf 8 - 字节顺序标记在J中拧紧文件读数

我正在尝试使用Java读取CSV文件。 一些文件在开头可能有一个字节顺序标记,但不是全部。 当存在时,字节顺序与第一行的其余部分一起被读取,从而导致字符串比较出现问题。

是否有一种简单的方法可以跳过字节顺序标记?

谢谢!

trans by 2019-07-26T20:04:31Z

unicode - 使用awk删除字节顺序m

用于删除BOM的#FE #FF脚本(可能是单线程)怎么样?

规格:

  • 首先打印每一行(#FE #FF
  • 对于第一行:如果以#FE #FF#FF #FE开头,请删除它们并打印其余部分
trans by 2019-07-23T01:29:06Z

vb.net - 写没有字节顺序标记(BOM)的文本文件?

我正在尝试使用带有UTF8编码的VB.Net创建一个文本文件,没有BOM。 任何人都可以帮助我,怎么做?
我可以用UTF8编码写文件但是,如何从中删除字节顺序标记?

EDIT1:我试过像这样的代码;

    Dim utf8 As New UTF8Encoding()
    Dim utf8EmitBOM As New UTF8Encoding(True)
    Dim strW As New StreamWriter("c:\temp\bom\1.html", True, utf8EmitBOM)
    strW.Write(utf8EmitBOM.GetPreamble())
    strW.WriteLine("hi there")
    strW.Close()

        Dim strw2 As New StreamWriter("c:\temp\bom\2.html", True, utf8)
        strw2.Write(utf8.GetPreamble())
        strw2.WriteLine("hi there")
        strw2.Close()

1.html仅使用UTF8编码创建,2.html使用ANSI编码格式创建。

简化方法 - [http://whatilearnttuday.blogspot.com/2011/10/write-text-files-without-byte-order.html]

trans by 2019-06-28T06:26:10Z

xslt - 如何从xml fi中删除BOM字符

这个问题在这里已有答案:

  • XML - 根级别的数据无效                                     2个答案

我正在使用xsl来控制我的xml文件的输出,但是正在添加BOM字符。

trans by 2019-06-23T06:34:59Z

c# - 如何检测文本文件的字符编码?

我尝试检测我的文件中使用了哪个字符编码。

我尝试使用此代码来获取标准编码

public static Encoding GetFileEncoding(string srcFile)
    {
      // *** Use Default of Encoding.Default (Ansi CodePage)
      Encoding enc = Encoding.Default;

      // *** Detect byte order mark if any - otherwise assume default
      byte[] buffer = new byte[5];
      FileStream file = new FileStream(srcFile, FileMode.Open);
      file.Read(buffer, 0, 5);
      file.Close();

      if (buffer[0] == 0xef && buffer[1] == 0xbb && buffer[2] == 0xbf)
        enc = Encoding.UTF8;
      else if (buffer[0] == 0xfe && buffer[1] == 0xff)
        enc = Encoding.Unicode;
      else if (buffer[0] == 0 && buffer[1] == 0 && buffer[2] == 0xfe && buffer[3] == 0xff)
        enc = Encoding.UTF32;
      else if (buffer[0] == 0x2b && buffer[1] == 0x2f && buffer[2] == 0x76)
        enc = Encoding.UTF7;
      else if (buffer[0] == 0xFE && buffer[1] == 0xFF)      
        // 1201 unicodeFFFE Unicode (Big-Endian)
        enc = Encoding.GetEncoding(1201);      
      else if (buffer[0] == 0xFF && buffer[1] == 0xFE)      
        // 1200 utf-16 Unicode
        enc = Encoding.GetEncoding(1200);


      return enc;
    }

我的第五个字节是60,118,56,46和49。

是否有图表显示哪些编码与这五个第一个字节匹配?

trans by 2019-06-08T12:54:22Z

visual studio 2010 - 没有BOM的UTF-8

我有javascript文件,我需要它们以UTF-8(没有BOM)保存,每当我在Notepad ++中将它们转换为正确的格式时,当我在Visual Studio中打开它们时,它们将恢复为带有BOM的UTF-8。 我如何阻止VS2010这样做呢?

另一个问题是,Visual Studio中没有签名的UTF-8与没有BOM的UTF-8相同吗?

trans by 2019-04-24T20:34:55Z

如何在PHP中输出UTF-8 CSV,Excel将正确读取?

我有一个非常简单的事情,只输出一些CSV格式的东西,但它必须是UTF-8。 我在TextEdit或TextMate或Dreamweaver中打开这个文件,它正确地显示了UTF-8字符,但是如果我在Excel中打开它,它就是这样做的傻事。 这是我在文档的头部所得到的:

header("content-type:application/csv;charset=UTF-8");
header("Content-Disposition:attachment;filename=\"CHS.csv\"");

除了Excel(Mac,2008)不想正确导入它之外,这一切似乎都具有预期的效果。 Excel中没有选项可以“以UTF-8打开”或其他任何东西,所以......我有点恼火。

尽管有很多人遇到同样的问题,我似乎无法在任何地方找到任何明确的解决方案。 我最看重的是包含BOM,但我无法弄清楚如何做到这一点。 正如你在上面看到的那样,这只是echo pack("CCC", 0xef, 0xbb, 0xbf);这个数据,我不是在写任何文件。 如果我需要,我可以这样做,我不是因为此时似乎不需要它。 有帮助吗?

更新:我尝试将BOM回显为echo pack("CCC", 0xef, 0xbb, 0xbf);,我刚刚从试图检测BOM的站点中提取。 但Excel只会在导入时将这三个字符附加到第一个单元格,并且仍会混淆特殊字符。

trans by 2019-04-19T06:08:43Z

编码 - 使用PowerShell以UTF-8编写没有BOM的文件

Out-File似乎在使用UTF-8时强制BOM:

$MyFile = Get-Content $MyPath
$MyFile | Out-File -Encoding "UTF8" $MyPath

如何使用PowerShell以UTF-8编写没有BOM的文件?

trans by 2019-03-10T15:04:50Z

unicode - 没有BOM的UTF-8和UTF-8有什么不同?

没有BOM的UTF-8和UTF-8有什么不同? 哪个更好?

trans by 2019-01-18T08:53:05Z

1 共1页