Tag: 字符编码

Unicode到Mazovia编码冗余char

我一直在处理这个问题几个小时。 我正在将一个包含波兰变音符号ąśółńźć等的字符串保存到文件中,但我必须使用的软件才能读取该文件只能使用Mazovia编码 ,这是一种非常古老的编码,不受Microsoft Encoding类的支持。 .Net字符串由UTF-16字符组成,因此我一直使用此代码将Unicode转换为Mazovia。 string rekord = (linia.Substring(0, linia.Length – 1)) + Environment.NewLine; string rekordMazovia = Kodowanie.UnicodeNaMazovia(rekord); File.AppendAllText(sciezka, rekordMazovia); public static class Kodowanie { public static string UnicodeNaMazovia(string tekst) { return tekst .Replace((char)0x104, (char)0x8F) //Ą .Replace((char)0x106, (char)0x95) //Ć .Replace((char)0x118, (char)0x90) //Ę .Replace((char)0x141, (char)0x9C) //Ł .Replace((char)0x143, (char)0xA5) //Ń .Replace((char)0xD3, (char)0xA3) //Ó .Replace((char)0x15A, (char)0x98) //Ś .Replace((char)0x179, […]

你怎么能在网页上编辑有效的XML?

我必须启动并运行快速而肮脏的配置编辑器。 流程如下: 配置(服务器上的POCO)序列化为XML。 此时XML已经很好地形成了。 配置将发送到XElements中的Web服务器。 在Web服务器上,XML(是,全部IT)被转储到textarea中进行编辑。 用户直接在网页中编辑XML并单击“提交”。 在响应中,我检索XML配置的更改文本。 此时,所有转义都已通过在网页中显示它们的过程恢复。 我尝试将字符串加载到XML对象(XmlElement,XElement,等等)。 KABOOM。 问题是序列化会转义属性字符串,但在转换过程中会丢失。 例如,假设我有一个具有正则表达式的对象。 以下是Web服务器的配置: 所以,我把它放到textarea中,它对用户来说是这样的: <Validator Expression="[^ 因此,用户稍作修改并将更改提交回来。 在Web服务器上,响应字符串如下所示: <Validator Expression="[^ 因此,用户添加了另一个validation器,现在BOTH具有非法字符的属性。 如果我尝试将其加载到任何XML对象中,它会抛出exception,因为<和&在文本字符串中无效。 我不能不能使用任何类型的编码功能,因为它编码整个血腥的东西: var result = Server.HttpEncode(editedConfig); 结果是 <Configuration> <Validator Expression=”[^<]” /> <Validator Expression=”[^&]” /> </Configuration> 这不是有效的XML。 如果我尝试将其加载到任何类型的XML元素中,我将会被一个下降的铁砧击中。 我不喜欢掉落的铁砧。 那么,问题仍然存在……我是否可以通过使用正则表达式替换来获得解析为XML对象的XML字符串的唯一方法? 我加载时有没有办法“关闭约束”? 你怎么绕过这个? 最后一个回应,然后维护这个,因为我认为没有一个有效的答案。 我在textarea中放置的XML是有效的,转义的XML。 1)将其放入文本区域的过程2)将其发送给客户端3)将其显示给客户端4)提交表单,然后将其发送回服务器,以及6)从表格REMOVES中检索值任何和所有逃脱。 让我再说一遍:我不会逃避任何事情。 只需在浏览器中显示它就可以了! 需要考虑的事项:有没有办法防止这种无法逃避的事情发生在一开始? 有没有办法采用几乎有效的XML并以安全的方式“清理”它? 这个问题现在有了它的赏金。 要收集赏金,您将演示如何在浏览器窗口中编辑VALID XML而不使用第三方/开源工具,该工具不需要我使用正则表达式手动转义属性值,这不需要用户转义其属性,并且在往返时不会失败(&amp; amp; amp; […]

在字符串中定义4字节UTF-16字符

我读过一个关于UTF-8,UTF-16和UCS-2的问题 ,几乎所有答案都说明UCS-2已经过时,C#使用UTF-16。 但是,我在C#中创建4字节字符U + 1D11E的所有尝试都失败了,所以我实际上认为C#仅使用UTF-16的UCS-2子集。 有我的尝试: string s = “\u1D11E”; // gives the 2 character string “ᴑE”, because \u1D11 is ᴑ string s = (char) 0x1D11E; // won’t compile because of an overflow string s = Encoding.Unicode.GetString(new byte[] {0xD8, 0x34, 0xDD, 0x1E}); // gives 㓘ờ C#字符串真的是UTF-16还是它们实际上是UCS-2? 如果它们是UTF-16,我怎样才能将小提琴谱号放入我的C#弦中?

Encoding.UTF8.GetBytes和UTF8Encoding.Default.GetBytes之间的区别

有人可以解释我有什么不同的赌注。 Encoding.UTF8.GetBytes和UTF8Encoding.Default.GetBytes? 实际上我正在尝试将XML字符串转换为流对象,现在发生的是每当我使用此行时: MemoryStream stream = new MemoryStream(UTF8Encoding.Default.GetBytes(xml)); 它给我一个错误“System.Xml.XmlException:给定编码中的无效字符” 但是当我使用这一行时,它工作正常: **MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(xml));** 即使它在两种情况下似乎都是UTF8编码,但是其中一种是有效的,另一种则不然?

X.ToCharArray()。长度EQUALS GetBytes(X).Length

string s = “test”; int charCount = s.ToCharArray().Length; int byteCount = System.Text.Encoding.Default.GetBytes(s).Length; 什么时候可以(charCount!= byteCount)发生? 我相信Unicode字符但不是一般情况下。 .NET支持Unicode字符,但是.NET的默认(System.Text.Encoding.Default)编码是什么? “System.Text.Encoding.Default”将“System.Text.SBCSCodePageEncoding”显示为单字节编码。

试图让libmecab.dll(MeCab)与C#一起使用

我正在尝试在C#程序(Visual Studio 2010 Express,Windows 7)中使用日本形态分析器MeCab ,并且编码出了问题。 如果我的输入(粘贴到文本框中)是这样的: 一方,広义の「ネコ」は,ネコ类(ネコ科动物)の一部,あるいはその全ての獣を指す包括的名称を指す。 然后我的输出(在另一个文本框中)看起来像这样: ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* (åè©ž,ã,μ変接続,*,*,*,*,* ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* )åè©ž,ã,μ変接続,*,*,*,*,* ? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* ????????????????????????? AE©Z,ã,μ変AEZ¥ç¶š,*,*,*,*,* […]

C#:有没有办法发现文件的字符集编码使用了什么?

有没有办法发现编码文件的字符集是什么?

如何将字符代码大于127的字符串正确转换为字节数组?

我正在从另一个系统检索用代码页437编码的ASCII字符串,我需要将其转换为Unicode,以便它们可以与其他Unicode字符串混合使用。 这就是我正在使用的: var asciiString = “\u0094”; // 94 corresponds represents ‘ö’ in code page 437. var asciiEncoding = Encoding.GetEncoding(437); var unicodeEncoding = Encoding.Unicode; // This is what I attempted to do but it seems not to be able to support the eight bit. Characters using the eight bit are replaced with ‘?’ (0x3F) var asciiBytes […]

C#电子邮件主题解析

我正在构建一个用C#读取电子邮件的系统。 我在解析主题时遇到了问题,我认为这个问题与编码有关。 我正在阅读的主题如下: =?ISO-8859-1?Q?=E6=F8sd=E5f=F8sdf_sdfsdf?= ,发送的原始主题是æøsdåføsdf sdfsdf (那里有挪威字符)。 我有什么想法可以改变编码或正确解析它? 到目前为止,我已经尝试使用C#编码转换技术将主题编码为utf8,但没有任何运气。 这是我尝试过的解决方案之一: Encoding iso = Encoding.GetEncoding(“iso-8859-1”); Encoding utf = Encoding.UTF8; string decodedSubject = utf.GetString(Encoding.Convert(utf, iso, iso.GetBytes(m.Subject.Split(‘?’)[3])));

File.ReadAllText中的字符无效

我正在一个程序中调用File.ReadAllText() ,该程序旨在格式化我拥有的一些文件。 其中一些文件包含® (174)符号。 但是,在读取文本时,返回的字符串包含 (65533)符号,其中® (174)应该是。 是什么导致这种情况,我该如何解决?