在C#中同时操作unicode和ASCII字符集
我在我的C#应用​​程序中有此映射 string [,] unicode2Ascii = { { "ஹ", "\x86" } }; ஹ-是泰米尔文字"ஹ"的Unicode值.这是MS Word作为字节序列保存的UNICODE值的原始六角字体.我试图将这些Unicode值"字符串"映射到255岁以下的十六进制值(以适应不支持的系统). 我试图使用字符串.这样: S = S.replace(unicode2Ascii[0,0], unicode2Ascii[0,1]); 但是,由此产生的Ouput有一个?而不是存储的实际十六进制0x86.关于如何将该数组的第二个元素的编码设置为Windows-1252之类的指针? 还是有更好的方法来进行此转换? 预先感谢 解决方案 不确定这是否有帮助,但是Windows支持了泰米尔语代码" 57004 -ISCII Tamil". 不过,它对上面的示例字符没有给出相同的翻译.对于'ஹ
0 2024-04-16
编程技术问答社区
如何对UTF8字节进行解码?
如何在C#? 中的字符串中解码UTF8字节 示例:解码此输入: "Poluci%C3%B3n" 输出以下内容: "Polución" 解决方案 此编码似乎是URL编码(不是UTF-8编码).您可以在.NET中使用多种不同方法来否定它: HttpUtility.UrlDecode("Poluci%C3%B3n"); // returns "Polución" Uri.UnescapeDataString("Poluci%C3%B3n"); // returns "Polución" 其他解决方案 尝试以下方法: Uri.UnescapeDataString("Poluci%C3%B3n") 问题与UTF8无关.只是编码URL.
0 2024-04-16
编程技术问答社区
使用自定义编码或添加自定义字符
无论如何,我可以使用一些自定义编码或转换一些base16字符(两个字节字符(如日语shifter-jis中)使用二进制读取器时,我可以使用?我的意思是,在阅读它们时,例如,如果有一个0x00ff,它将其转换为" \ et",在阅读时和写作时(编辑文件和使用binarywriter编写). 解决方案 我认为您想实现自己的编码和解码,因此问题与您如何实现它们有关,这取决于您的算法.默认Encoding仅支持流行的编码,例如Unicode, BigEndianUnicode, UTF-8, ....我建议您不需要任何类型的自定义编码,因为您可以看到Encoding只是一类,其中一些方法可以执行实际的encoding和decoding,它可以帮助您处理井中的很多方法 - 已知,流行的编码Unicode ...但是,对于您自己的编码,您必须实现几乎所有这样的核心功能: public class CustomEncoding : Encoding { //NOTE: There
0 2024-04-16
编程技术问答社区
RestSharp忽略响应字符集编码
我正在使用RESTSHARP版本105.1.0(.NET 4.5.1)对我们自己的API进行休息.此API发送以下特别关注的标题:Content-Type: application/json; Charset=iso-8859-1.如您所见,此响应的字符设置为ISO-8859-1. 我希望我从RestSharp获得的响应使用此编码来解码响应内容.但是,当我查看RestResponse.Content属性时,某些字符显示为�.据我所知,这意味着使用了错误的编码.当我尝试使用适当的编码手动解码RawBytes时,我确实会得到正确的字符串. 我尝试在RestClient上手动设置ISO-8859-1 Encoding属性,但无济于事. 如何确保使用右编码对Restsharp的响应进行解码? 示例代码: // Setting the Encoding here does not change the result var client = new RestClien
0 2024-04-16
编程技术问答社区
解密TripleDES "坏数据"
我是新手加密/解密的新手.我试图解密一个已加密并显示为44个字符的输入字符串. 这是我到目前为止的目标 public static String Decrypt(String input) { try{ byte[] inputArray = Convert.FromBase64String(input); TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider(); tripleDES.KeySize = 128; tripleDES.Key = UTF8Encoding.UTF8.GetBytes("0123456789ABCDEF"); tripleDES.IV = UTF8Encoding.UTF8.GetBytes("ABCDEF
0 2024-04-16
编程技术问答社区
MVC .net core不能正确显示特殊字符
我在MVC .NET核心网站中有一个非常简单的视图. @model MvcSearch.Models.SearchModel @{ ViewData["Title"] = "Index"; } Buscador de Información @Html.Partial("SearchBox", Model.Search) @if (Model.Results.Count() == 0) { No hay nada que mostrar, ¡busca algo!
0 2024-04-16
编程技术问答社区
C#中的64进制编码
我继承了一些C#代码.此代码需要将图片上传到Web服务.此代码将图片的字节保存到byte[]中,称为ImageBytes.为了确保最大的可移植性,我想首先将ImageBytes编码到基本64编码的字符串中.我相信以下代码正在这样做,但是,我不确定.有人可以验证我的假设是否正确吗? StringBuilder sb = new StringBuilder(); this.ImageBytes.ToList().ForEach(x => sb.AppendFormat("{0}.", Convert.ToUInt32(x))); 此代码是否将我的byte[]转换为基本64编码字符串? 谢谢! 解决方案 使用方法System.Convert.ToBase64String()和System.Convert.FromBase64String() 例如 public static string EncodeTo64(string toEncode) {
0 2024-04-16
编程技术问答社区
如何将UTF-8阿拉伯字母转换成CodePage 1001?
我有一个支持CodePage 1001阿拉伯语的Star Micronics TSP,如何使用C#将UTF-8转换为该特定代码页面? 更新:我发现CodePage 864与打印机兼容,我尝试发送十六进制值,并且得到了正确的字符, myPrinter.PrintNormal(PrinterStation.Receipt, "\xFE8D"); 我尝试了以下内容将字符串转换为codepage 864: Encoding enc = Encoding.GetEncoding(864); byte[] arr = enc.GetBytes("السلام"); 我在编码之后获得的字节ARR值是{63,63,63,63,63,63},它的值是错误的,甚至字节数是错误的,因为它是双字节字符. 解决方案 未经测试,但是: String s = Encoding.UTF8.GetString(bytes); Encoding enc = Encoding.GetEnc
0 2024-04-16
编程技术问答社区
在c#中支持阿拉伯文演示表格B
我试图使用C#中的编码API从UTF-8转换为UTF-8到Arabic-1265 编码,但是我遇到了一个奇怪的问题,即某些字符未正确转换,例如". "在以下陈述中" ﻣﺣﻣ ﺻﻼححححح仪我的一些朋友告诉我,这是因为这些字符来自阿拉伯语表格B.我使用记事本++创建文件,并将其保存为UTF-8. 这是我使用的代码 StreamReader sr = new StreamReader(@"C:\utf-8.txt", Encoding.UTF8); string str = sr.ReadLine(); StreamWriter sw = new StreamWriter(@"C:\windows-1256.txt", false, Encoding.GetEncoding("windows-1256")); sw.Write(str); sw.Flush(); sw.Close(); 但是,我不知道如何使用C#中的此演示文稿
0 2024-04-16
编程技术问答社区
编码为单字节的扩展ascii值
在c#中是否有一种方法可以将扩展的ASCII值(128-255)编码为其单个字节值,如下所示: http ://asciitable.com/ 我已经尝试使用Encoding.utf8.getBytes(),但这返回了扩展代码的多字节值.我不需要255岁以上的东西,但是至少支持这些东西会很好.我试图将文本数据发送到arduino运行和LED矩阵并想要处理重音字母的情况下,而无需处理多重字符. 编辑:要澄清,LED矩阵没有特定的编码.基本上是我所说的.其中没有内置的文本支持或Arduino.它只是一个愚蠢的128x8像素显示屏,控制器是按Pixel手动绘制文本像素的.因此,我实际上是为其提供字体(作为标题文件中的字节数组),并且可以使任何字符代码与我想要的任何输出相对应...因此,使用哪种代码并不是真正的问题哪一个会给我完整的8位角色. 解决方案 只需将代码页码传递到Encoding构造函数即可.如果您链接的是正确的"扩展ASCII"表,那将是 437 .. 但是
0 2024-04-15
编程技术问答社区
UrlEncod-Javascript vs. C#
我有一个需要一些参数的URL.这些参数的值可以是强调字符,因此我绝对需要它们来urlencode.奇怪的是,我看到行为或JavaScript和.Net之间的区别. 让我们假装我尝试将"éléphant"一词urlencode.在JavaScript(根据此网站: ),我得到以下内容:%e9l%e9phant.这对我来说似乎是正确的.但是,在带有此调用的.NET(system.web.httputility.urlencode("éléphant"))中,我得到了"%c3%a9l%c3%c3%a9phant". 怎么了?我想念什么?如果我想在.net中获得%e9l%e9phant我该怎么办? 谢谢! 解决方案 system.web.httputitions.urlencode将使用utf8(我认为..)作为其默认编码器,您可以通过指定一个.. 来更改此问题. System.Web.HttpUtility.UrlEncode("éléphant", Encodin
0 2024-04-15
编程技术问答社区
Encoding.ASCII与new ASCIIEncoding()
如果我使用: a)var targetEncodingA = Encoding.ASCII; 和 b)var targetEncodingB = new ASCIIEncoding(); 然后targetencoding0和targetencoding1均为相同的类型. 是否有使用或b? 的优先场景和/或优点/缺点 (除了每次使用时通过构造函数创建新实例) 解决方案 这是Encoding.ASCII实现详细信息(来自Encoding.cs): private static volatile Encoding asciiEncoding; public static Encoding ASCII { { if (Encoding.asciiEncoding == null) Encoding.asciiEncoding = (Encoding) new ASCIIEncoding(); return Enco
0 2024-04-15
编程技术问答社区
可变长度的整数编码
我试图逆转LZ1/LZ77减压算法.要输出的解码缓冲区/窗口的区域的长度在文件中编码为可变长度整数.我已经阅读了尽可能多的关于可变长度整数编码的信息,在这种情况下使用的方法似乎不像我所看到的其他任何其他方法.也许是为了避免专利问题,或者只是为了混淆.随附的代码可能还不够完整,但此时至少正在处理几个文件. 我看不出,如果有的话,下面使用的公式如何被简化为简单的东西.编码算法的大多数可变长度整数都使用某种循环,但是对于此循环,我无法做到这一点,因为在评估每个刺头时该公式似乎并不一致. 建议. . private static int getLength(BitReader bitStream) { const int minSize = 2; int length = 0; byte nibble3, nibble2, nibble1; nibble3 = bitStream.ReadNibble(); if (nibble3
2 2024-04-15
编程技术问答社区
如何删除HttpClient请求头的默认字符集?
我试图从C#代码击中API.我无法获得响应并接收状态代码" 500-内部服务器错误". 发现" Charset-UTF8"被请求标题附加的原因 当我试图在没有" Charset-UTF8"的情况下击中API时,我可以在提琴手和Postman中获得响应.使用" Charset-UTF8",我得到相同的500个内部服务器错误.内容类型是application/json. 我什至尝试了每种编码方法UTF-8,16,32,unicode和unicode和默认格式的C#代码都会给出相同的错误. 请让我知道如何从API请求标题中删除Charset(附加). 请浏览我已附加的代码 HttpClient client1 = new HttpClient(); client1.BaseAddress = new Uri("i have third party url"); client1.DefaultRequestHeaders .Accept .Ad
0 2024-04-15
编程技术问答社区
C#将字符串转换为与之对应的字节[]。
在这一点上 byte[] dataB= System.Text.Encoding.ASCII.GetBytes(data); 然而.我遇到的问题是,我需要字节的确切值,而没有仅编码每个字节的纯值.例如,如果字符串的值为(0xff32),我希望它也将其转换为{255,50}.他的理由是我有一个文件格式,我正在尝试阅读哪个存储int的字节保存它们,然后在程序打开时读取它们. 这是我到目前为止所拥有的: ... dialog.InitialDirectory = Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop) + "/Test"; dialog.Title="Open File"; if (dialog.ShowDialog(this) == DialogResult.OK) { StreamReader reader = new StreamReader(di
0 2024-04-15
编程技术问答社区
为什么我不能将XDocument的XDeclaration编码类型设置为iso-8859-1?
为什么以下代码不设置XML声明编码类型?它总是将编码设置为UTF-16.我是否想念很明显的东西? var xdoc = new XDocument( new XDeclaration("1.0", "iso-8859-1", null), new XElement("root", "") ); 输出: 解决方案 请参阅有关指定TextWriter编码的答案. 旁边:ISO-8859-1是一个字符集,而不是编码. Unicode也是一个字符集,但是UTF-16是将Unicode字符设置为一组字节的编码.您不能将文档的编码指定为ISO-8859-1,就像您无法将文档的字符集指定为UTF-16一样.请注意,Unicode是本地字符集,UTF-16是用于.net和Java String类以及基于文本或基于字符串的操作的本机Unicode 其他解决
0 2024-04-15
编程技术问答社区
以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". 目录中的所有XML均为" UTF-16"编码.唯一的区别是,某些XML文件缺少在我使用的对象中定义的元素. 例如,考虑我的文件夹中有3种不同类型的XML: file1.xml file2.xml
0 2024-04-15
编程技术问答社区
通过TcpClient发送一个包含特殊字符的字符串(byte[])。
我正在尝试通过tcpclient(byte [])发送包含特殊字符的字符串.这是一个例子: 客户端在文本框中输入"amé" 客户端使用某个编码将字符串转换为字节[](我尝试了所有预定义的和一些" ISO-8859-1") 客户端通过TCP发送字节[] 服务器接收并输出使用相同编码(列表框)重新连接的字符串 编辑: 我忘了提到由此产生的字符串是" am?". edit-2(根据要求,这里有一些代码): @djkraze这是一些代码: byte[] buffer = Encoding.ASCII.GetBytes("amé"); (TcpClient)server.Client.Send(buffer); 在服务器端: byte[] buffer = new byte[1024]; Client.Recieve(buffer); string message = Encoding.ASCII.GetString(buffer); ListB
0 2024-04-15
编程技术问答社区
不能隐含地将字符串类型转换为byte[]
我有一个类,可以加密使用盐的哈希. 在 这是类代码: public class MyHash { public static string ComputeHash(string plainText, string hashAlgorithm, byte[] saltBytes) { Hash Code } } 当我使用类时,我会收到错误:"不能隐式将字符串转换为字节[] //Encrypt Password byte[] NoHash = null; byte[] encds = MyHash.ComputeHash(Password, "SHA256", NoHash); 解决方案 ComputeHash函数的返回类型为string.您尝试将功能的结果分配给encds,即byte[].编译器将此差异指向您,因为从string到byte[]. 没有隐式转换 其他
0 2024-04-15
编程技术问答社区