草庐IT

C#:将 byte[] 转换为 UTF8 编码的字符串

我正在使用一个名为EXIFextractor的库从图像中提取元数据信息。该库部分使用System.Drawing.Imaging.PropertyItem来完成所有艰苦的工作。根据Microsoft文档,PropertyItem中的某些数据(例如图像详细信息等)是作为存储在byte[]中的ASCII字符串获取的。我的问题是国际字符(å、ä、ö等)被删除并替换为问号。当我调试代码时,很明显byte[]是UTF-8的表示。我想将byte[]解析为UTF8字符串,如何在不丢失任何信息的情况下执行此操作?提前致谢!更新:我被要求提供我的代码片段:第一个片段来self使用的类,即由AsimGoh

c# - 使用 Windows 范围内的 Beta UTF-8 支持功能时在 Winforms 中调整 RTF 的错误

我想我在Windows或.NET中发现了一个错误,正在寻找解决方法。要重现该问题,请首先启用Windows功能“Beta:使用UnicodeUTF-8以获得全局语言支持”。您可能需要重启机器。现在在Winforms/C#中简单的创建两个RichTextBox组件,然后添加事件:privatevoidrichTextBox1_TextChanged(objectsender,EventArgse){strings=richTextBox1.Rtf;richTextBox2.Rtf=s;}最后,运行该程序并在第一个RichTextBox中简单地键入一些内容,当它尝试写入richTextBo

c# - 为什么这会出现在我的 C# 字符串 : £ 中

我在c#中有一个字符串初始化如下:stringstrVal="£2000";但是每当我写出这个字符串时,都会写出以下内容:2000英镑它不会用美元来做这件事。我用来写出值的代码示例:System.IO.File.AppendAllText(HttpContext.Current.Server.MapPath("/logging.txt"),strVal);我猜这与本地化有关,但如果C#字符串只是unicode,那么这应该就可以了吗?澄清:更多信息,JonSkeet的回答是正确的,但是我在对字符串进行URLEncode时也遇到了问题。有什么办法可以避免这种情况吗?所以URL编码的字符串看

c# - Encoding.UTF8.GetString 和 Encoding.UTF8.GetBytes 不是彼此相反的原因是什么?

可能我遗漏了什么,但我不明白为什么Encoding.UTF8.GetString和Encoding.UTF8.GetBytes不能作为彼此的逆变换工作?在下面的示例中,myOriginalBytes和asBytes不相等,甚至它们的长度也不同。谁能解释我错过了什么?byte[]myOriginalBytes=GetRandomByteArray();varasString=Encoding.UTF8.GetString(myOriginalBytes);varasBytes=Encoding.UTF8.GetBytes(asString); 最佳答案

c# - .net 中的转换 : Native Utf-8 <-> Managed String

我创建了这两种方法来将nativeutf-8字符串(char*)转换为托管字符串,反之亦然。以下代码完成这项工作:publicIntPtrNativeUtf8FromString(stringmanagedString){byte[]buffer=Encoding.UTF8.GetBytes(managedString);//notnullterminatedArray.Resize(refbuffer,buffer.Length+1);buffer[buffer.Length-1]=0;//terminating0IntPtrnativeUtf8=Marshal.AllocHGlob

c# - 在 Windows 应用商店应用程序中使用 httpclient 获取 UTF-8 响应

我正在构建一个Windows应用商店应用,但我一直无法从API获取UTF-8响应。这是代码:using(HttpClientclient=newHttpClient()){Uriurl=newUri(BaseUrl+"/me/lists");HttpRequestMessagerequest=newHttpRequestMessage(HttpMethod.Get,url);request.Headers.Add("Accept","application/json");HttpResponseMessageresponse=awaitclient.SendRequestAsync(r

c# - 如何使用 EnterpriseLibrary.Logging 登录 UTF-8

我对有关EnterpriseLibrary.Logging的搜索有些困惑。我有一个这样设置的监听器和格式化程序:...我在多个项目中使用它并且工作正常。除了一件事,我希望EnterpriseLibrary使用UTF-8编码创建我的日志文件(默认情况下我得到ANSI文件),但不幸的是我不知道该怎么做。我希望能够登录到我的文件的字符串中有特殊字符(例如变音符号);当我将文件转换为UTF-8并进一步使用它时,我看到日志记录工作正常,但我真的希望以这种方式创建它。这可以在xml配置或其他地方完成吗?提前感谢您的帮助! 最佳答案 开箱即用,我

c# - 配置 .NET WCF UTF-8 反序列化器以修改/丢弃非最短格式字符而不是抛出异常?

我们有一个通过WCF托管的SOAP网络服务。我们偶尔从其中接收数据的客户端之一使用非最短格式对UTF-8进行编码(有关这方面的一些信息,请参阅http://www.unicode.org/versions/corrigendum1.html)。修改客户端并不容易,因为我们的代码没有对这些非最短形式的字符进行编码。相反,我们希望编辑WCF服务以丢弃这些字符,将它们替换为其他占位符字符,甚至接受非最短形式的字符。对于我们的用例,这些中的任何一个都是可以接受的,尽管前一个选项是首选,因为它们减少了任何安全风险。查看堆栈跟踪:System.ServiceModel.Dispatcher.Net

c# - C# .NET 中的 UTF-16 安全子字符串

我想得到一个给定长度的子字符串,比如150。但是,我想确保我不会切断unicode字符之间的字符串。例如看下面的代码:varstr="Hello?world!";varsubstr=str.Substring(0,6);此处substr是无效字符串,因为笑脸字符被切成两半。相反,我想要一个执行以下操作的函数:varstr="Hello?world!";varsubstr=str.UnicodeSafeSubstring(0,6);其中substr包含“Hello?”作为引用,以下是我在Objective-C中使用rangeOfComposedCharacterSequencesForR

c# - StreamReader 无法正确读取扩展字符集 (UTF8)

我遇到了无法读取包含外来字符的文件的问题。有人告诉我,该文件以UTF-8格式编码。这是我的代码的核心:using(FileStreamfileStream=fileInfo.OpenRead()){using(StreamReaderreader=newStreamReader(fileStream,System.Text.Encoding.UTF8)){stringline;while(!string.IsNullOrEmpty(line=reader.ReadLine())){hashSet.Add(line);}}}该文件包含“achôcre”一词,但在调试过程中检查它时,它会将