C#和JAVA文件的UTF-8格式互换
2009-09-28 10:08
316 查看
web项目用JAVA写,安装程序用C#写成,安装时需要利用C#程序读取.java文件,该文件编码格式是UTF-8,一开始这样来读写JAVA文件的:
using (StreamReader sr =
new StreamReader(new FileStream(filePath, FileMode.Open),
System.Text.Encoding.UTF8))
{
using (StreamWriter sw =
new StreamWriter(new FileStream(newFile, FileMode.Create),
System.Text.Encoding.UTF8))
{
string line = "";
while ((line = sr.ReadLine()) != null)
{
for (int i = 0; i < args.Length; i++)
{
if (line.Contains(args[i]))
{
if (!line.Contains("=")) break;
int offset = line.IndexOf('=');
string replacedStr = line.Substring(offset + 1);
line = line.Replace(replacedStr, " " + values[i] + ";");
}
}
sw.WriteLine(line);
}
}
}
结果发现生成的JAVA文件总是含有乱码,后来调研得知:
使用 Encoding.UTF8 是自动带 三 byte 的 BOM,如果要不添加 BOM。应该改用 UTF8Encoding utf8 = new UTF8Encoding(是否添加 BOM);
而JAVA文件的头中不包含这三个字节的BOM,因此C#源码改为如下一切恢复正常:
UTF8Encoding utf8 = new UTF8Encoding(false);
using (StreamReader sr =
new StreamReader(new FileStream(filePath, FileMode.Open),
utf8))
{
using (StreamWriter sw =
new StreamWriter(new FileStream(newFile, FileMode.Create),
utf8))
{
string line = "";
while ((line = sr.ReadLine()) != null)
{
for (int i = 0; i < args.Length; i++)
{
if (line.Contains(args[i]))
{
if (!line.Contains("=")) break;
int offset = line.IndexOf('=');
string replacedStr = line.Substring(offset + 1);
line = line.Replace(replacedStr, " " + values[i] + ";");
}
}
sw.WriteLine(line);
}
sr.Close();
sw.Close();
}
}
using (StreamReader sr =
new StreamReader(new FileStream(filePath, FileMode.Open),
System.Text.Encoding.UTF8))
{
using (StreamWriter sw =
new StreamWriter(new FileStream(newFile, FileMode.Create),
System.Text.Encoding.UTF8))
{
string line = "";
while ((line = sr.ReadLine()) != null)
{
for (int i = 0; i < args.Length; i++)
{
if (line.Contains(args[i]))
{
if (!line.Contains("=")) break;
int offset = line.IndexOf('=');
string replacedStr = line.Substring(offset + 1);
line = line.Replace(replacedStr, " " + values[i] + ";");
}
}
sw.WriteLine(line);
}
}
}
结果发现生成的JAVA文件总是含有乱码,后来调研得知:
使用 Encoding.UTF8 是自动带 三 byte 的 BOM,如果要不添加 BOM。应该改用 UTF8Encoding utf8 = new UTF8Encoding(是否添加 BOM);
而JAVA文件的头中不包含这三个字节的BOM,因此C#源码改为如下一切恢复正常:
UTF8Encoding utf8 = new UTF8Encoding(false);
using (StreamReader sr =
new StreamReader(new FileStream(filePath, FileMode.Open),
utf8))
{
using (StreamWriter sw =
new StreamWriter(new FileStream(newFile, FileMode.Create),
utf8))
{
string line = "";
while ((line = sr.ReadLine()) != null)
{
for (int i = 0; i < args.Length; i++)
{
if (line.Contains(args[i]))
{
if (!line.Contains("=")) break;
int offset = line.IndexOf('=');
string replacedStr = line.Substring(offset + 1);
line = line.Replace(replacedStr, " " + values[i] + ";");
}
}
sw.WriteLine(line);
}
sr.Close();
sw.Close();
}
}
相关文章推荐
- Source Insight 将UTF-8格式的JAVA文件转换为GB2312格式的JAVA文件
- Java读取UTF-8格式txt文件第一行出现乱码——问号“?”及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法
- Java读取UTF-8格式txt文件第一行出现乱码——问号“?”及解决
- UTF-8格式编码与UTF-8无BOM格式编码的区别(包括java文件)
- java基础 --- 创建utf-8格式文件
- Java读取UTF-8格式txt文件第一行出现乱码——问号“?”及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法
- Java读取UTF-8格式文件第一行出现乱码——问号“?”及解决 And Java读带有BOM的UTF-8文件乱码原因及解决方法
- eclipse中要让一个 Java 源文件打开时编码格式为 UTF-8
- Java读取UTF-8格式txt文件第一行出现乱码——问号“?”及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法
- Java读取UTF-8格式txt文件第一行出现乱码——问号“?”及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法
- Java读取UTF-8格式txt文件第一行出现乱码——问号“?”及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法
- Java读取txt或其他文件以UTF-8格式输出的时候,第一行代码出现“?”乱码的原因及解决方案!
- 使用java 程序创建格式为utf-8文件的方法(写入和读取json文件)
- Java文件读写—utf-8格式
- 识别常见编码格式文件并转换成UTF-8编码的java实现
- Java读取UTF-8格式txt文件第一行出现乱码——问号“?”及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法
- java IO读取UTF-8格式txt文件第一行数据隐藏的坑
- Java读取UTF-8格式文件第一行出现乱码——问号“?”及解决 And Java读带有BOM的UTF-8文件乱码原因及解决方法
- Java读取UTF-8格式txt文件第一行出现乱码——问号“?”的解决方案
- Source Insight 将UTF-8格式的JAVA文件转换为GB2312格式的JAVA文件