我在使用C#将挪威字符写入XML文件时遇到问题.我有一个包含一些挪威文字的字符串变量(字母像æøå).
我正在使用XmlTextWriter编写XML,将内容写入MemoryStream,如下所示:
MemoryStream stream = new MemoryStream();
XmlTextWriter xmlTextWriter = new XmlTextWriter(stream, Encoding.GetEncoding("ISO-8859-1"));
xmlTextWriter.Formatting = Formatting.Indented;
xmlTextWriter.WriteStartDocument(); //Start doc
Run Code Online (Sandbox Code Playgroud)
然后我像这样添加我的挪威文字:
xmlTextWriter.WriteCData(myNorwegianText);
Run Code Online (Sandbox Code Playgroud)
然后我将文件写入磁盘,如下所示:
FileStream myFile = new FileStream(myPath, FileMode.Create);
StreamWriter sw = new StreamWriter(myFile);
stream.Position = 0;
StreamReader sr = new StreamReader(stream);
string content = sr.ReadToEnd();
sw.Write(content);
sw.Flush();
myFile.Flush();
myFile.Close();
Run Code Online (Sandbox Code Playgroud)
现在的问题是,在这个文件中,所有的挪威字符看起来都很有趣.
我可能会以某种愚蠢的方式做上述事情.有关如何解决它的任何建议?
来自java.lang.StringCoding:
String csn = (charsetName == null) ? "ISO-8859-1" : charsetName;
Run Code Online (Sandbox Code Playgroud)
这是从Java.lang.getBytes()中使用的,在linux jdk 7中我总是认为UTF-8是默认的字符集?
谢谢
我正在发送以ISO 88591-1格式保存的文本文件,其中包含来自Latin-1范围的重音字符(以及普通的ASCII az等).如何使用C#将这些文件转换为UTF-8,以便ISO 8859-1中的单字节重音字符成为有效的UTF-8字符?
我尝试使用带有ASCIIEncoding的StreamReader,然后通过实例化编码ascii和编码utf8然后使用Encoding.Convert(ascii, utf8, ascii.GetBytes( asciiString) )- 将ASCII字符串转换为UTF-8,但重音字符被渲染为问号.
我错过了什么步骤?
我有一个Python脚本,它使用加载网页urllib2.urlopen,做一些不同的魔法,然后使用它来吐出结果print.然后,我们在Windows上运行该程序,如下所示:
python program.py > output.htm
Run Code Online (Sandbox Code Playgroud)
这是问题所在:
在urlopen从其输出UTF8 IIS Web服务器读取数据.它会将相同的数据吐出到输出中,但是某些字符(例如Word总是会根据您的意愿为您插入的长连字符,因为它比您更聪明)会出现乱码并最终变形–.
经过进一步调查,我注意到即使Web服务器吐出UTF8数据,该output.htm文件也使用ISO-8859-1字符集进行编码.
我的问题:
output.htm作为命令行参数传入并写入该文件而不是屏幕,但我必须在我的程序中重做一大堆逻辑.谢谢你的帮助!
更新:
在output.htm我的顶部添加:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Run Code Online (Sandbox Code Playgroud)
但是,它没有任何区别.角色仍然是乱码.如果我在Firefox中手动切换到UTF-8,则文件会正确显示.IE和FF都认为这个文件是Western ISO,尽管它显然不是.
运行以下(示例)代码
import java.io.*;
public class test {
public static void main(String[] args) throws Exception {
byte[] buf = {-27};
InputStream is = new ByteArrayInputStream(buf);
BufferedReader r = new BufferedReader(
new InputStreamReader(is, "ISO-8859-1"));
String s = r.readLine();
System.out.println("test.java:9 [byte] (char)" + (char)s.getBytes()[0] +
" (int)" + (int)s.getBytes()[0]);
System.out.println("test.java:10 [char] (char)" + (char)s.charAt(0) +
" (int)" + (int)s.charAt(0));
System.out.println("test.java:11 string below");
System.out.println(s);
System.out.println("test.java:13 string above");
}
}
Run Code Online (Sandbox Code Playgroud)
给了我这个输出
test.java:9 [byte] (char)? (int)63 test.java:10 [char] (char)? (int)229 test.java:11 string below ? test.java:13 string …
我正在阅读XML文档(UTF-8)并最终使用ISO-8859-1在网页上显示内容.正如预期的那样,有几个字符显示不正确,比如“,–和’(他们显示为?).
是否可以将这些字符从UTF-8转换为ISO-8859-1?
这是我编写的代码片段,用于尝试此操作:
BufferedReader br = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "UTF-8"));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line);
}
br.close();
byte[] latin1 = sb.toString().getBytes("ISO-8859-1");
return new String(latin1);
Run Code Online (Sandbox Code Playgroud)
我不太确定会出现什么问题,但是我认为它是readLine()引起了悲伤(因为字符串是Java/UTF-16编码的?).我尝试的另一种变化是用latin1替换
byte[] latin1 = new String(sb.toString().getBytes("UTF-8")).getBytes("ISO-8859-1");
Run Code Online (Sandbox Code Playgroud)
我已经读过以前关于这个主题的帖子,我正在学习.在此先感谢您的帮助.
json_encode()当我使用åäö时,不会为我工作.为什么?我怎样才能让它发挥作用?
的php:
echo json_encode($arr);
Run Code Online (Sandbox Code Playgroud)
的javascript:
var theResponse = JSON.parse(xmlHttp.responseText);
Run Code Online (Sandbox Code Playgroud)
当我alert()回复时,响应中包含å,ä或ö,响应为=NULL
拜托,帮帮我......
我试图在OSX上用python 3.5.1运行一个非常简单的例子,但我真的被困了.已经阅读了很多处理类似问题的文章,但我自己无法解决这个问题.您是否有任何提示如何解决此问题?
我想在mylist中定义正确编码的latin-1输出,没有任何错误.
我的代码:
# coding=<latin-1>
mylist = [u'Glück', u'Spaß', u'Ähre',]
print(mylist)
Run Code Online (Sandbox Code Playgroud)
错误:
Traceback (most recent call last):
File "/Users/abc/test.py", line 4, in <module>
print(mylist)
UnicodeEncodeError: 'ascii' codec can't encode character '\xfc' in position 4: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
我如何修复错误但仍然出现stdout(print)错误:
mylist = [u'Glück', u'Spaß', u'Ähre',]
for w in mylist:
print(w.encode("latin-1"))
Run Code Online (Sandbox Code Playgroud)
我得到的输出:
b'Gl\xfcck'
b'Spa\xdf'
b'\xc4hre'
Run Code Online (Sandbox Code Playgroud)
什么'locale'告诉我:
LANG="de_AT.UTF-8"
LC_COLLATE="de_AT.UTF-8"
LC_CTYPE="de_AT.UTF-8"
LC_MESSAGES="de_AT.UTF-8"
LC_MONETARY="de_AT.UTF-8"
LC_NUMERIC="de_AT.UTF-8"
LC_TIME="de_AT.UTF-8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)
什么 - >'python3'告诉我:
Python 3.5.1 (default, Jan 22 2016, 08:54:32)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] …Run Code Online (Sandbox Code Playgroud) 我需要将ISO-8859-1文件转换为utf-8编码,而不会丢失内容的修改......
我有一个看起来像这样的文件:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<HelloEncodingWorld>Üöäüßßß Test!!!</HelloEncodingWorld>
Run Code Online (Sandbox Code Playgroud)
我不想将其编码为UTF-8.我试过以下:
f=new File('c:/temp/myiso88591.xml').getText('ISO-8859-1')
ts=new String(f.getBytes("UTF-8"), "UTF-8")
g=new File('c:/temp/myutf8.xml').write(ts)
Run Code Online (Sandbox Code Playgroud)
由于String不兼容而无法正常工作.然后我读了一些关于bytestreamreaders/writers/streamingmarkupbuilder和其他的东西......
然后我试过了
f=new File('c:/temp/myiso88591.xml').getText('ISO-8859-1')
mb = new groovy.xml.StreamingMarkupBuilder()
mb.encoding = "UTF-8"
new OutputStreamWriter(new FileOutputStream('c:/temp/myutf8.xml'),'utf-8') << mb.bind {
mkp.xmlDeclaration()
out << f
}
Run Code Online (Sandbox Code Playgroud)
这完全不是我想要的......
我只想用ISO-8859-1读取器获取xml读取的内容,然后将其放入一个新的(旧)文件中......为什么这么复杂: - /
结果应该是,并且文件应该在utf-8中真正编码:
<?xml version="1.0" encoding="UTF-8" ?>
<HelloEncodingWorld>Üöäüßßß Test!!!</HelloEncodingWorld>
Run Code Online (Sandbox Code Playgroud)
谢谢你的任何答案干杯
我有一个网站,它从字符串中删除正确的编码(ISO-8859-1)并发送错误.
我在HTML中指定了此编码
<meta charset="ISO-8859-1">
Run Code Online (Sandbox Code Playgroud)
我通过加载我的JavaScript
<script type="text/javascript" charset="ISO-8859-1" src="...
Run Code Online (Sandbox Code Playgroud)
我通过JQuery Ajax Request发送信息(带有德语特殊字符'ö'和'ä'):
$.ajax({
url: '..',
type: 'POST',
contentType: 'application/xml;charset=ISO-8859-1',
data: xmlRequest.html(),...
Run Code Online (Sandbox Code Playgroud)
这被转换为请求,在Chrome开发人员工具中,我在请求标题中看到了这一点:
..
Content-Type: application/xml;charset=UTF-8
..
Run Code Online (Sandbox Code Playgroud)
那里发生了什么?
当然特殊字符编码错误("Ã"而不是"ö")服务器无法理解我,我得到一个错误.
javascript jquery content-type iso-8859-1 character-encoding
iso-8859-1 ×10
utf-8 ×5
encoding ×3
java ×3
c# ×2
.net ×1
content-type ×1
groovy ×1
javascript ×1
jquery ×1
json ×1
latin1 ×1
php ×1
piping ×1
python ×1
python-3.x ×1
xml ×1