标签: byte-order-mark

PHP文件中的UTF-8 BOM签名

我正在编写一些评论过的PHP类,我偶然发现了一个问题.我的名字(对于@author标签)最终得到一个?(这是一个UTF-8字符,......和一个奇怪的名字,我知道).

即使我将文件保存为UTF-8,一些朋友报告说他们看到这个角色完全搞砸了(È™).添加BOM签名会消除此问题.但是这件事让我感到很麻烦,因为我不太了解它,除了我在维基百科上看到的以及其他一些类似的问题.

我知道它在文件的开头添加了一些东西,从我的理解它并没有那么糟糕,但我很担心,因为我读到的唯一有问题的场景涉及PHP文件.因为我正在编写PHP类来共享它们,所以100%兼容比在评论中使用我的名字更重要.

但我试图理解其含义,我应该使用它而不用担心吗?或者是否有可能造成损害的情况?什么时候?

php byte-order-mark utf-8 character-encoding

22
推荐指数
4
解决办法
4万
查看次数

Python读取csv - 嵌入第一个键的BOM

我正在使用Python 2.7.12.使用此代码片段,我将保存一个utf-8 csv文件.我在文件的开头写了BOM.

import codecs
import csv

outputFile = open("test.csv", "wb")
outputFile.write(codecs.BOM_UTF8)
fieldnames = ["a", "b"]
writer = csv.DictWriter(outputFile, fieldnames, delimiter=";")
writer.writeheader()
row = dict([])
for i in range(10):
    row["a"] = str(i).encode("utf-8")
    row["b"] = str(i*2).encode("utf-8")
    writer.writerow(row)
outputFile.close()
Run Code Online (Sandbox Code Playgroud)

我想加载该csv文件:

import codecs
import csv
inputFile = open("test.csv", "rb")
reader = csv.DictReader(inputFile, delimiter=";")
for row in reader:
    print row["a"]
inputFile.close()
Run Code Online (Sandbox Code Playgroud)

上面的代码将失败:KeyError: 'a' 如果我打印行键,这就是它们的样子:[u'\ufeffa', u'b'].BOM已嵌入到密钥中a.我究竟做错了什么?

python csv byte-order-mark key

22
推荐指数
2
解决办法
6134
查看次数

如何在java中添加UTF-8 BOM

我有一个Java存储过程,它使用Resultset对象从表中获取记录并创建一个csv文件.

BLOB retBLOB = BLOB.createTemporary(conn, true, BLOB.DURATION_SESSION);
retBLOB.open(BLOB.MODE_READWRITE);
OutputStream bOut = retBLOB.setBinaryStream(0L);
ZipOutputStream zipOut = new ZipOutputStream(bOut);
PrintStream out = new PrintStream(zipOut,false,"UTF-8");
out.write('\ufeff');
out.flush();
zipOut.putNextEntry(new ZipEntry("filename.csv"));
while (rs.next()){
    out.print("\"" + rs.getString(i) + "\"");
    out.print(",");
}
out.flush();
zipOut.closeEntry();
zipOut.close();
retBLOB.close();
return retBLOB;
Run Code Online (Sandbox Code Playgroud)

但生成的csv文件未显示正确的德语字符.Oracle数据库的NLS_CHARACTERSET值也为UTF8.

请建议.

java byte-order-mark character-encoding oracle10g

18
推荐指数
5
解决办法
6万
查看次数

使用Java删除BOM字符

使用Java作为vis 的等价物需要发生什么

:set nobomb
Run Code Online (Sandbox Code Playgroud)

假设BOM来自我正在阅读的文件.

java vi byte-order-mark

17
推荐指数
2
解决办法
3万
查看次数

如何检测.NET StreamReader是否在基础流上找到了UTF8 BOM?

我得到一个FileStream(filename,FileMode.Open,FileAccess.Read,FileShare.ReadWrite)然后一个StreamReader(stream,true).

有没有办法可以检查流是否以UTF8 BOM开头?我注意到没有BOM的文件被StreamReader读取为UTF8.

我怎么能分开呢?

c# byte-order-mark utf-8 filestream streamreader

16
推荐指数
3
解决办法
9075
查看次数

如何从UTF-8文件中删除BOM?

我有一个带有BOM的UTF-8编码文件,想要删除BOM.是否有任何linux命令行工具从文件中删除BOM?

$ file test.xml
test.xml:  XML 1.0 document, UTF-8 Unicode (with BOM) text, with very long lines
Run Code Online (Sandbox Code Playgroud)

linux command-line byte-order-mark file utf-8

16
推荐指数
4
解决办法
2万
查看次数

使用BOM编译(javac)UTF8编码的Java源代码

您好,感谢您阅读我的帖子.

我的问题如下:我想用"javac"编译一个Java源文件,该文件是用BOM(操作系统是WinXP)进行UTF-8编码的.

以下是我的工作:

1)使用"记事本"创建文件,然后选择UTF-8编码

dos> notepad Test.java
"File -> Save as..."
File name   : Test.java
Save as type: All Files
Encoding    : UTF-8
Save
Run Code Online (Sandbox Code Playgroud)

2)在该文件中创建一个Java类并保存文件,如1)

public class Test
{
    public static void main(String [] args)
    {
        System.out.println("This is a test.");
    }
}
Run Code Online (Sandbox Code Playgroud)

3)可视化文件的十六进制版本(第一行)

dos> xxd Test.java | head -1
0000000: efbb bf70 7562 6c69 6320 636c 6173 7320  ...public class
Run Code Online (Sandbox Code Playgroud)

注意: ef bb bf是UTF-8编码的BOM(UTF-16编码的BOM是FE FF).

4)尝试使用"javac"编译此代码

dos> javac -encoding utf8 Test.java
Test.java:1: illegal character: \65279
?public class …
Run Code Online (Sandbox Code Playgroud)

byte-order-mark javac utf-8

15
推荐指数
2
解决办法
4万
查看次数

使用BOM读取UTF-8文本文件

我有一个文本文件,开头有字节顺序标记(U + FEFF).我试图在R中读取文件.是否可以避免字节顺序标记?

函数fread(来自data.table包)读取文件,但?»æ在第一个变量名的开头添加:

> names(frame_pers)[1]
[1] "?Ⱦreg_date"
Run Code Online (Sandbox Code Playgroud)

同样是与read.csv功能.

目前我已经创建了一个从第一列名称中删除BOM的功能,但我相信应该有一种方法来自动剥离BOM.

remove.BOM <- function(x) setnames(x, 1, substring(names(x)[1], 4))

> names(frame_pers)[1]
[1] "?Ⱦreg_date"
> remove.BOM(frame_pers)
> names(frame_pers)[1]
[1] "reg_date"
Run Code Online (Sandbox Code Playgroud)

我正在使用R会话的本机编码:

> options("encoding" = "")
> options("encoding")
$encoding
[1] ""
Run Code Online (Sandbox Code Playgroud)

unicode byte-order-mark r utf-8 character-encoding

15
推荐指数
2
解决办法
1万
查看次数

从File.ReadAllBytes(byte [])中删除字节顺序标记

我有一个HTTPHandler,它读取一组CSS文件并将它们组合起来然后GZipping它们.但是,一些CSS文件包含一个字节顺序标记(由于TFS 2005自动合并中的一个错误),而在FireFox中,BOM被作为实际内容的一部分被读取,因此它搞砸了我的类名等.我怎样才能剥离出BOM字符?有没有一种简单的方法可以在没有手动浏览字节数组的情况下查找""?

c# byte-order-mark

14
推荐指数
2
解决办法
1万
查看次数

R的read.csv在第一列名称前加上垃圾文本

我已将数据从SQL Server Management Studio中的结果网格导出到csv文件.csv文件看起来正确.

但是当我使用read.csv将数据读入R数据帧时,第一列名称前缀为" ï.. ".我如何摆脱这个垃圾文本?

例:

str(trainData)

'data.frame':   64169 obs. of  20 variables:    
 $ ï..Column1             : int  3232...   
 $ Column2                : int  4242...
Run Code Online (Sandbox Code Playgroud)

数据看起来像这样(没什么特别的):

Column1,Column2
100116577,100116577
100116698,100116702

byte-order-mark r utf-8

14
推荐指数
1
解决办法
2万
查看次数