标签: iso-8859-1

使用带有ISO-8859-1编码的XmlTextWriter编写XML文件

我在使用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)

现在的问题是,在这个文件中,所有的挪威字符看起来都很有趣.

我可能会以某种愚蠢的方式做上述事情.有关如何解决它的任何建议?

.net c# xml encoding iso-8859-1

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

为什么Java的String.getBytes()使用"ISO-8859-1"

来自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是默认的字符集?

谢谢

java utf-8 iso-8859-1 character-encoding

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

使用.NET如何将包含Latin-1重音字符的ISO 8859-1编码文本文件转换为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,但重音字符被渲染为问号.

我错过了什么步骤?

c# utf-8 iso-8859-1 latin1

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

彼得派珀吹嘘一个Python程序 - 并失去了他所有的unicode角色

我有一个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字符集进行编码.

我的问题:

  1. 当您将Python程序重定向到Windows上的输出文件时,它是否始终使用此字符集?
  2. 如果是这样,有没有办法改变这种行为?
  3. 如果没有,是否有解决方法?我想我可以直接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,尽管它显然不是.

python utf-8 iso-8859-1 character-encoding piping

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

Java InputStream编码/字符集

运行以下(示例)代码

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 …

java encoding iso-8859-1

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

用Java将UTF-8转换为ISO-8859-1

我正在阅读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)

我已经读过以前关于这个主题的帖子,我正在学习.在此先感谢您的帮助.

java utf-8 iso-8859-1 character-encoding

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

如何让json_encode()与ISO-8859-1(åäö)一起使用

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

拜托,帮帮我......

php json iso-8859-1

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

Python3:UnicodeEncodeError:'ascii'编解码器无法编码字符'\ xfc'

我试图在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 python-3.x python-unicode

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

使用groovy将ISO-8859-1转换为UTF-8

我需要将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)

谢谢你的任何答案干杯

groovy encoding utf-8 iso-8859-1

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

Jquery忽略编码ISO-8859-1

我有一个网站,它从字符串中删除正确的编码(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

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