我遇到了StreamWriter和Byte Order Marks的问题.该文档似乎表明Encoding.UTF8编码已启用字节顺序标记,但是当写入文件时,一些文件具有标记,而其他文件没有.
我正在以下列方式创建流编写器:
this.Writer = new StreamWriter(this.Stream, System.Text.Encoding.UTF8);
Run Code Online (Sandbox Code Playgroud)
任何有关可能发生的事情的想法都将受到赞赏.
在OS X和Linux上列出Java 6中的目录内容时,我正在努力解决一个奇怪的文件名编码问题:这些File.listFiles()和相关的方法似乎以不同于系统其他部分的编码方式返回文件名.
请注意,不仅仅是这些文件名的显示导致了我的问题.我主要感兴趣的是将文件名与远程文件存储系统进行比较,因此我更关心名称字符串的内容而不是用于打印输出的字符编码.
这是一个演示程序.它创建一个带有Unicode名称的文件,然后打印出从直接创建的文件中获取的文件名的URL编码版本,以及在父目录下列出的相同文件(您应该在空目录中运行此代码).结果显示该File.listFiles()方法返回的不同编码.
String fileName = "Trîcky Nåme";
File file = new File(fileName);
file.createNewFile();
System.out.println("File name: " + URLEncoder.encode(file.getName(), "UTF-8"));
// Get parent (current) dir and list file contents
File parentDir = file.getAbsoluteFile().getParentFile();
File[] children = parentDir.listFiles();
for (File child: children) {
System.out.println("Listed name: " + URLEncoder.encode(child.getName(), "UTF-8"));
}
Run Code Online (Sandbox Code Playgroud)
这是我在系统上运行此测试代码时得到的结果.请注意%CC与%C3角色的表示.
OS X Snow Leopard:
File name: Tri%CC%82cky+Na%CC%8Ame
Listed name: Tr%C3%AEcky+N%C3%A5me
$ java -version
java version "1.6.0_20"
Java(TM) SE …Run Code Online (Sandbox Code Playgroud) java unicode normalization file-encodings unicode-normalization
我有一个用VIM创建的PHP文件,但我不确定它的编码是什么.
当我使用终端并使用命令检查编码file -bi foo(我的操作系统是Ubuntu 11.04)时,它给出了下一个结果:
text/html; charset=us-ascii
但是,当我用gedit打开文件时,它说它的编码是UTF-8.
哪一个是正确的?我希望文件以UTF-8编码.
我的猜测是文件中没有BOM并且命令file -bi读取文件并且没有找到任何UTF-8字符,所以它假设它是ascii,但实际上它是用UTF-8编码的.
我正在进行一些搜索和替换操作,我正在尝试使用PowerShell进行自动化.不幸的是,我昨天认识到我们的代码库中有不同的文件编码(UTF8和ASCII).因为我们在不同的分支中执行这些搜索和替换操作,所以在此阶段我无法更改文件编码.
如果我正在运行以下行,它会将所有文件更改为UCS-2 Little Eindian,即使我的默认PowerShell编码设置为iso-8859-1(西欧(Windows)).
$content = Get-Content $_.Path
$content -replace 'myOldText' , 'myNewText' | Out-File $_.Path
Run Code Online (Sandbox Code Playgroud)
有没有办法阻止PowerShell更改文件的编码?
powershell cmdlet out-file具有-encoding您可以设置的开关default.此默认值将使用系统当前ANSI代码页的编码.
我的问题是:如何获取out-file将与powershell一起使用的此默认编码的名称?
问题:我有一个包含特殊字符的字符串,我将其转换为字节,反之亦然..转换在Windows上正常工作但在linux上特殊字符未正确转换.在Linux上的默认字符集是使用Charset看到的UTF-8. defaultCharset.getdisplayName()
但是如果我使用选项-Dfile.encoding = ISO-8859-1在linux上运行它可以正常工作..
如何使用UTF-8默认字符集使其工作,而不在unix环境中设置-D选项.
编辑:我使用jdk1.6.13
编辑:代码段与cs ="ISO-8859-1"一起使用; 或者cs ="UTF-8"; 在胜利但不在Linux
String x = "½";
System.out.println(x);
byte[] ba = x.getBytes(Charset.forName(cs));
for (byte b : ba) {
System.out.println(b);
}
String y = new String(ba, Charset.forName(cs));
System.out.println(y);
Run Code Online (Sandbox Code Playgroud)
〜关于黛德
我将Excel表保存为文本(*.txt).不幸的是,Excel不允许我选择编码.所以我需要在记事本(打开为ANSI)中打开它并将其保存为UTF-8.然后,当我在R中读到它时:
data <- read.csv("my_file.txt",header=TRUE,sep="\t",encoding="UTF-8")
Run Code Online (Sandbox Code Playgroud)
它显示以"XUFEFF."开头的第一列的名称.我知道这些是保留的字节,告诉任何程序该文件是UTF-8格式.所以它不应该显示为文本!这是一个错误吗?或者我错过了一些选择?提前致谢!
Delphi 2009将新源代码文件的默认文件格式设置为ANSI,这使得源代码依赖于平台.
即使是在IDE中创建的新XSD文件,默认情况下也以此行开头
<?xml version="1.0" encoding="UTF-8" ?>
Run Code Online (Sandbox Code Playgroud)
Delphi将文件格式设置为ANSI(这看起来像一个bug,默认选择新的XML和XSLT文档UTF8).
是否有隐藏选项来设置源代码文件的默认文件格式?
有没有办法检查用Unicode编码的文本文件(.txt)或用Java编写的UTF-8?
我想写与包含字符UTF-8编码文件
10001100是Œ拉丁资本结扎OE在扩展ASCII表,
zz <- file("c:/testbin", "wb")
writeBin("10001100",zz)
close(zz)
Run Code Online (Sandbox Code Playgroud)
当我用office打开文件(encoding = utf-8)时,我可以看到Œ我读不到的是readBin?
zz <- file("c:/testbin", "rb")
readBin(zz,raw())->x
x
[1] c5
readBin(zz,character())->x
Warning message:
In readBin(zz, character()) :
incomplete string at end of file has been discarded
x
character(0)
Run Code Online (Sandbox Code Playgroud) file-encodings ×10
utf-8 ×5
java ×3
powershell ×2
r ×2
unicode ×2
ascii ×1
c# ×1
csv ×1
delphi ×1
delphi-2009 ×1
encoding ×1
file-io ×1