Tag: 编码

如何正确解码重音字符以便显示

我的原始输入文件文本文件包含一个字符串: Caf&eacute (Should be Café) 文本文件是UTF8文件。 输出让我们说是另一个文本文件,所以它不一定适用于网页。 我可以使用哪种C#方法输出正确的格式, Café ? 显然是一个常见的问题 ?

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, […]

如何阻止git在结帐时破坏编码

我最近使用以下设置将.gitattributes文件添加到ac#repository: * text=auto *.cs text diff=csharp 我按照github的这些说明重新规范了存储库,它似乎工作正常。 我遇到的问题是当我签出一些文件(不是所有文件)时,我看到许多奇怪的字符与实际代码混在一起。 当git通过上面的.gitattributes文件指定的lf->crlf转换运行文件时,似乎会发生这种情况。 根据Notepad ++,混乱的文件使用UCS-2 Little Endian或UCS-2 Big Endian编码。 似乎正常工作的文件是ANSI或UTF-8编码。 作为参考,我的git版本是1.8.0.msysgit.0 ,我的操作系统是Windows 8。 我有什么想法可以解决这个问题? 更改文件的编码是否足够?

为遗传算法表示二进制基因组的合理方法是什么?

我之前的问题是缺乏经验而且基于一个假设。 现在我更聪明了。 (把1和0放在一个字符串里?Pah!我嘲笑这个建议!) 我的问题是, 我应该如何编码我的基因组 ? 在纸面上,它们看起来像这样: 01010011010110010 17位,用于编码(在某些情况下单独地,在某些情况下作为组)要测试的参数。 要求是: 需要可扩展。 目前可能有17个,但随着选项的添加,删除或修改范围,这可能会增长/缩小。 每个位都需要单独翻转,以表示点突变。 理想情况下,应该很容易取两个基因组的最后X%并将它们切换(代表交叉)。 必须有一种直接用明文表示基因组的方法。 这里强调的是方便而不是人类的可译性。 (想想URL缩短器。) 有人有什么好主意吗? (如果它有用,我正在使用C#。)

将变音符号转换为简单的utf

由于某些编码问题,我在将字符串插入数据库时​​遇到问题。 字符串源是外部rss源。 在网络浏览器中它看起来不错。 即使在调试器中,文本似乎也没问题。 如果我将powershell复制到记事本,结果也可以。 但是在记事本中,++可以看到该字符串正在使用组合字符。 如果更改为ansii,则两者都会出现。 例如 á显示为’a’ (在记事本++中就像有两个字符,在另一个字符上。我甚至可以选择…一半的字符) 我google了很多,并尝试了非常不同的方法来解决这个问题。 我真的想找到一种巧妙的转换字符串方法,将变音符号与简单的utf8数据库兼容。 有帮助吗? 非常感谢!

将UTF8数据插入SQL Server 2008

我有编码问题。 我想将UTF-8编码文件中的数据放入SQL Server 2008数据库。 SQL Server仅具有UCS-2编码,因此我决定显式转换检索到的数据。 // connect to page file _fsPage = new FileStream(mySettings.filePage, FileMode.Open, FileAccess.Read); _streamPage = new StreamReader(_fsPage, System.Text.Encoding.UTF8); 这是数据的转换例程: private string ConvertTitle(string title) { string utf8_String = Regex.Replace(Regex.Replace(title, @”\\.”, _myEvaluator), @”(?<=[^\\])_", " "); byte[] utf8_bytes = System.Text.Encoding.UTF8.GetBytes(utf8_String); byte[] ucs2_bytes = System.Text.Encoding.Convert(System.Text.Encoding.UTF8, System.Text.Encoding.Unicode, utf8_bytes); string ucs2_String = System.Text.Encoding.Unicode.GetString(ucs2_bytes); return ucs2_String; } 当单步执行关键标题的代码时,变量监视会显示utf-8和ucs-2字符串的正确字符。 […]

在字符串中定义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#弦中?

C# – 比较不同编码的字符串

使用C#,我从.ascx页面获取TextBox.Text值。 当我将值的相等性与LINQ查询中的常规字符串对象进行比较时,它总是返回false。 我得出的结论是,它们的编码方式不同,但到目前为止还没有转换或比较它们的运气。 docname = “Testdoc 1.docx”; //regular string created in C# fetchedVal = ((TextBox)e.Item.FindControl(“txtSelectedDocs”)).Text; //UTF-8 当表示为文字时,上述两个字符串是相同的,但是比较byte[] ,由于编码,它们明显不同。 我尝试了很多不同的东西,比如: System.Text.Encoding.Default.GetString(utf8.GetBytes(fetchedVal)); 但这将返回值”Testdoc 1.docx” 。 如果我反而尝试 System.Text.Encoding.Default.GetString(System.Text.Encoding.Default.GetBytes(fetchedVal)); 它返回”Testdoc 1.docx”但是Equals() check仍然返回false 。 我也试过以下,这似乎是推荐的方法,但没有运气: byte[] utf8Bytes = Encoding.UTF8.GetBytes(fetchedVal); byte[] unicodeBytes = Encoding.Convert(Encoding.UTF8, Encoding.Unicode, utf8Bytes); string fetchedValConverted = Encoding.Unicode.GetString(unicodeBytes); 罪魁祸首似乎是空白,因为在检查字节序列时,它始终是不同的第七个字节。 你如何正确地从UTF-8转换为C#中的默认字符串编码?

C#随机密码生成器

这是代码:(passwordLengthBox是NumericUpDown Box,r和k是随机数) private void generateButton_Click(object sender, EventArgs e) { int r, k; int passwordLength = (Int32)passwordLengthBox.Value; string password = “”; char[] upperCase = { ‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘I’, ‘J’, ‘K’, ‘L’, ‘M’, ‘N’, ‘O’, ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’, ‘Z’ }; char[] lowerCase = { […]

以UTF-16编码格式反序列化xml文件时出现XmlException

使用C#的XmlSerializer。 在反序列化给定文件夹中的所有xml文件的过程中,我看到XmlException “There is an error in XML document (0, 0)”. 和InnerException是”There is no Unicode byte order mark. Cannot switch to Unicode”. 目录中的所有xmls都是“UTF-16”编码的。 唯一不同的是,一些xml文件缺少在反序列化时我正在使用的对象类中定义的元素。 例如,考虑我的文件夹中有3种不同类型的xmls: file1.xml file2.xml file3.xml 我有一个类代表上面的xml: [XmlTypeAttribute(AnonymousType = true, Namespace = “http://my.PaymentStatus”)] [XmlRootAttribute(“PaymentStatus”, Namespace = “http://http://my.PaymentStatus”, IsNullable = true)] public class PaymentStatus { private PaymentStatus2[] PaymentStatus2Field; [XmlElementAttribute(“PaymentStatus2”, Namespace = “”)] public PaymentStatus2[] […]