Tag: 编码

C#HtmlEncode – ISO-8859-1实体名称与数字

根据ISO-8859-1标准的下表 ,似乎存在与每个保留的HTML字符相关联的实体名称和实体编号。 例如,对于角色é : 实体名称: é 实体编号: é 同样,对于角色> : 实体名称: > 实体编号: > 对于给定的字符串, HttpUtility.HtmlEncode返回一个HTML编码的字符串,但我无法弄清楚它是如何工作的。 这就是我的意思: Console.WriteLine(HtmlEncode(“é>”)); //Outputs é> 它似乎使用é字符的实体编号,但是>字符的实体名称。 那么HtmlEncode方法真的适用于ISO-8859-1标准吗? 如果是这样,有没有理由说它有时会使用实体名称而有时使用实体编号? 更重要的是,我可以强制它可靠地给我实体名称吗? 编辑:谢谢你的答案。 我执行搜索之前无法解码字符串。 在没有太多细节的情况下,文本存储在SharePoint列表中,“搜索​​”由SharePoint本身完成(使用CAML查询)。 所以基本上,我不能。 我试图想出一种将实体数字转换为名称的方法,.NET中是否有一个函数可以做到这一点? 还是其他任何想法?

检查编码中是否存在字符

我正在编写一个程序,部件在CP437中呈现位图字体。 在一个呈现文本的函数中,我希望能够在编码转换之前检查CP437中是否有char ,如: public static void DrawCharacter(this Graphics g, char c) { if (char_exist_in_encoding(Encoding.GetEncoding(437), c) { byte[] src = Encoding.Unicode.GetBytes(c.ToString()); byte[] dest = Encoding.Convert(Encoding.Unicode, Encoding.GetEncoding(437), src); DrawCharacter(g, dest[0]); // Call the void(this Graphics, byte) overload } } 没有检查,CP437之外的任何字符都会产生’?’ (63,0x3F)。 我想完全隐藏任何无效字符。 除了以下愚蠢的方法之外,是否有char_exist_in_encoding的实现? private static bool char_exist_in_encoding(Encoding e, char c) { if (c == ‘?’) return true; […]

编码一个数字,z#base-32的C#实现还是别的什么?

我需要编码/解码一个长达9位但通常长7位的整数。 我想让它更容易沟通/记忆 – 它将通过电话,复制和粘贴,从卡/内存/标签键入,手写在标签上,一般滥用! 我希望使用基本32方案减少位数(同时添加校验和)。 我最赞成z-base-32 (通过RFC4648实现),因为一些设计目标(例如手写)和字母表的选择(小写,置换以支持更容易阅读,写,说,并记住)。 但是,我找不到C#实现,我担心从现有的Python实现移植。 有人有C#实现吗? 或者,是否有人可以使用一组测试用例(规范中的示例除外)来validation端口? 我对有关替代编码方案的建议持开放态度。

理解文本编码(在.Net中)

我对Text的编码做的很少。 说实话,我甚至都不知道它究竟意味着什么。 例如,如果我有类似的东西: Dim myStr as String = “Hello” 这是以特定格式在内存中“编码”的吗? 这种格式取决于我使用的语言吗? 如果我在另一个国家,比如中国,我有一串中文(普通话?如果我在这里使用了错误的词语,我道歉)下面的代码(我在英文字符串上使用得很好)还是一样吗? System.Text.UTF8Encoding encoding=new System.Text.UTF8Encoding(); return encoding.GetBytes(str); 或者当转换无效时将.Net字符串转换为UTF8Encoding时会失去所有意义吗? 最后,我已经与.Net合作了几年,而且我从未见过,听说过或者不得不对编码做任何事情。 我是例外,还是不常见的事情?

从UTF8转换为ASCII

我从以UTF8编码存储的XML文件中读取文本。 C#读取它完美,我用调试器检查,但是当我尝试将其转换为ASCII以将其保存在另一个文件中时,我得到了一个? char在角色冲突的地方。 例如,本文: string s = “La introducción masiva de las nuevas tecnologías de la información”; 将保存为 “La introducci?n masiva de las nuevas tecnolog?as de la informaci?n” 我不能只为他们的拉丁语(a,e,i,o,u)元音取代它们,因为西class牙语中的某些单词会错过这种感觉。 我已经尝试了这个问题并没有成功。 所以我希望有人可以帮助我。 第二个选择的答案甚至没有编译……! 如果有人想看看,我的代码是这样的: private void WriteInput( string input ) { byte[] byteArray = Encoding.UTF8.GetBytes(input); byte[] asciiArray = Encoding.Convert(Encoding.UTF8, Encoding.ASCII, byteArray); string finalString = Encoding.ASCII.GetString(asciiArray); string […]

zip文件中的文件编码(C#/ ionic-zip)

我们在zip文件中编码文件时出现问题。 我们使用离子拉链来压缩和解压缩档案。 我们位于丹麦,因此我们经常在文件名中包含æ,ø或å的文件。 当用户使用Windows内置工具压缩文件时,我发现它使用了IBM437 enconding,当我们在其中包含’ø’/’Ø’的文件时,这只是给出了一些时髦的结果。 我修复了以下代码: public static string IBM437Encode(this string text) { return text.Replace(‘ø’, ‘¢’).Replace(‘Ø’, ‘¥’); } public static string IBM437Decode(this string text) { return text.Replace(‘¢’, ‘ø’).Replace(‘¥’, ‘Ø’); } 这已经运行了一段时间了,一切都很好。 但是,因为总是一个但是,我们没有尝试使用mac osx中的默认工具压缩的文件。 所以现在我们遇到了一个新问题。当使用æ,ø和å时,编码是UTF-8! 所以如果我知道压缩文件的位置,我可以让它工作,但有没有简单的方法来检测或规范化拉链内的编码?

我如何编码1s和0s的字符串进行传输?

对于遗传算法应用程序,我使用了大量的二进制字符串。 大部分时间它们都采用01001010110的forms,因此它们可以交配,变异和“交叉”。 然而,对于运输和储存,这似乎是浪费。 将此编码为较短字符串的最简单方法是什么? 我猜这是非常微不足道的,但我不知道从哪里开始寻找。 更新:我实际上需要以另一个字符串结束:其中一个传输请求将是GET请求。

C#Encoding.Converting Latin to Hebrew

我正在尝试获取和解析一个用希伯来语编写的在线excel文档,但不幸的是用非希伯来语编码。 作为一个例子,我正在尝试转换以下字符串:“âìéåï_1”,它使用C#代码作为希伯来语的第一个表名,但我无法这样做。 我知道上面是可转换的,因为当我在NotePad ++中打开并选择编码/字符集/希伯来语/ Windows 1255时,我可以看到:“גליון_1”这是上述字符串的正确希伯来语表示。 我正在使用以下代码 string str = “âìéåï_1”; Encoding windows = Encoding.GetEncoding(“Windows-1255”); Encoding ascii = Encoding.GetEncoding(“Windows-1252”); byte[] asciiBytes = ascii.GetBytes(str); byte[] windowsBytes = Encoding.Convert(ascii, windows, asciiBytes); char[] windowsChars = new char[windows.GetCharCount(windowsBytes, 0, windowsBytes.Length)]; windows.GetChars(windowsBytes, 0, windowsBytes.Length, windowsChars, 0); string windowsString = new string(windowsChars); 我假设原始字符串的编码是Windows-1252,因为当我将它粘贴到NotePad ++并将编码更改为Windows-1252时,字符串保持不变… 我可能在这里做错了,有谁知道如何正确转换上述内容? 谢谢, 米奇

C#中的德语字母和编码

我有一个解压缩function,我使用System.Text.Encoding来确保提取后的文件在提取后保持相同的名称,因为我解压缩的文件通常包含德语字母。 我尝试了不同的东西,比如Encoding.Default或Encoding.UTF8但没有任何作用äÄéöÖüß.txt被转换为„Ž‚”™á.txt或者在默认情况下它是黑盒子:/ 有什么建议? using (ZipArchive archive = System.IO.Compression.ZipFile.Open(ZipFile, ZipArchiveMode.Read, System.Text.Encoding.Default)) { foreach (ZipArchiveEntry entry in archive.Entries) { string fullPath = Path.Combine(appPath, entry.FullName); if (String.IsNullOrEmpty(entry.Name)) { Directory.CreateDirectory(fullPath); } else { if (!entry.Name.Equals(“Updater.exe”)) { entry.ExtractToFile(fullPath,true); } } } }

Uri.EscapeDataString在NUnit测试与asp.net webservice中的行为有什么不同?

我正在使用Uri.EncodeDataString在URL上发送查询字符串。 原始字符串是: Photo($select=Name,Id)在我的VS2015调试器中运行的asp.net Web服务中,Uri.EncodeDataString将返回: Photo(%24select%3DName%2CId)但是,在NUnit下运行的测试在VS2015中的Resharper测试运行器,它返回: Photo%28%24select%3DName%2CId%29 。 注意括号编码的差异。 为什么括号在unit testing中编码而不在Web服务中编码? 括号不应该在Web服务中编码吗? 我在.Net 4.6下运行,所以我不应该受到StackOverflow上其他地方讨论的RFC 3986问题的影响( 这里 , 这里 , 这里和网络周围的许多其他地方)。