WebClient下载字符串UTF-8不显示国际字符
我试图将网站的HTML保存在字符串中.该网站具有国际字符(ę,Ś,,...),即使我将编码设置为utf-8,它们也没有保存到字符串中,该编码与网站相对应. 这是我的代码: using (WebClient client = new WebClient()) { client.Encoding = Encoding.UTF8; string htmlCode = client.DownloadString("http://www.filmweb.pl/Mroczne.Widmo"); } 当我将" htmlcode"打印到控制台时,即使在原始html中,国际字符也无法正确显示. 任何帮助都将不胜感激. 解决方案 我也有同样的问题.似乎client.DownloadString没有使用UTF-8编码字符.使用client.DownloadData并用Encoding.UTF8.GetString解决返回的数据解决问题. using (Web
0 2024-04-17
编程技术问答社区
Encoding.utf8.getString and Encoding.utf8.GetBytes彼此不相反的原因是什么?
在 在下面的示例中,肌产物和asbytes不等,即使它们的长度也不同.谁能解释我想念什么? byte[] myOriginalBytes = GetRandomByteArray(); var asString = Encoding.UTF8.GetString(myOriginalBytes); var asBytes = Encoding.UTF8.GetBytes(asString); 解决方案 如果您从有效的UTF-8字节序列开始,则它们是倒置的,但是如果您只是从 nut> nutyary 字节序列开始. 让我们以一个具体且非常简单的例子:一个单字节,0xff.这不是针对任何任何文本的有效utf-8编码.因此,如果您有: byte[] bytes = { 0xff }; string text = Encoding.UTF8.GetString(bytes); ...您最终会成为一个单个字符, u+fffd ," Unicode替换字符",用于指示解
0 2024-04-17
编程技术问答社区
如何检测.NET StreamReader是否在基础流上找到了UTF8 BOM?
我得到FileStream(filename,FileMode.Open,FileAccess.Read,FileShare.ReadWrite),然后是StreamReader(stream,true). 有什么方法可以检查流是否从UTF8 BOM开始? 我注意到没有BOM的文件被StreamReader读取为UTF8. 我该如何区分他们? 解决方案 而不是硬编码字节,使用API​​ 更漂亮 public string ConvertFromUtf8(byte[] bytes) { var enc = new UTF8Encoding(true); var preamble = enc.GetPreamble(); if (preamble.Where((p, i) => p != bytes[i]).Any()) throw new ArgumentException("Not utf8-BOM"); return enc.GetSt
0 2024-04-17
编程技术问答社区
如何在C#.Net中获得CSV文件的UTF-8编码?
我想制作编码UTF-8的CSV文件.现在,我的CSV文件无法显示日语字体.我希望C#代码解决此问题. 解决方案 Susanda, 我不确定您当前的代码或您要保存的实际文本,但这可能会使您朝着正确的方向发展. using(var sw = new StreamWriter("testfile_utf8.csv", false, Encoding.UTF8)) { sw.WriteLine("頼もう"); } 如果您在Excel中打开该文件,它将按预期显示日语文本. 如果您不包含Encoding.UTF8参数,则将显示gibberish. 我希望这就是您想要的. 其他解决方案 此代码有助于从CSV文件发短信,将其保存为编码的CSV文件. 要使用下面的调用并保存. getcsvfilecontent(" your_csv_filename") protected byte[] GetCSVFileContent(string fileNa
0 2024-04-17
编程技术问答社区
如何将utf8字符串转换为utf8字节数组?
如何将字符串转换为UTF8字节数组,我有此示例代码: 这可以正常工作: StreamWriter file = new StreamWriter(file1, false, Encoding.UTF8); file.WriteLine(utf8string); file.Close(); 这是错误的,文件在ASCII中: byte[] bytes = System.Text.UTF8Encoding.UTF8.GetBytes(utf8string); FileStream fs = new FileStream(file2, FileMode.CreateNew); fs.Write(bytes, 0, bytes.Length); fs.Close(); 我想获得该功能返回的字节数组: System.IO.File.ReadAllBytes(path_to_file) 因为这可以正常工作: byte[] datab = File.ReadAl
0 2024-04-17
编程技术问答社区
在C#中把一个字符串存储为UTF8
我在C#中进行了大量的字符串操作,并且确实需要每个字符的字符串存储一个字节.这是因为我在内存中同时需要文本的千兆字节,并且会导致记忆问题低.我可以肯定的是,本文将永远不会包含非ASCII字符,因此出于我的目的,System.String和System.Char将所有内容存储为每个字符的两个字节都是不必要的,也是一个真正的问题. 我即将开始编码自己的charascii和stringascii类 - 字符串基本上将其数据作为字节[],并公开字符串操纵方法,类似于System.String的数据.但是,这似乎做了很多工作,这似乎是一个非常标准的问题,所以我在这里确实在这里发布了一些问题,以检查是否还没有一个更容易的解决方案.例如,是否有某种方法可以制作系统.String在内部将数据存储为我没有注意到的UTF8,或者在问题上的其他方式? 解决方案 正如您发现的那样,CLR使用UTF-16进行字符编码.最好的选择可能是使用编码类和BitConverter来处理文本.这个问题有一些很好
0 2024-04-17
编程技术问答社区
网络插件Unicode-哪种UTF8?
当我创建一个webclient以消耗一些静止的XML时,我可以指定编码2种方法的Unicode: WebClient wc = new WebClient (); wc.Encoding = Encoding.UTF8; wc.Encoding = UTF8Encoding.UTF8; 哪个正确/更好? 解决方案 它们相同. UTF8Encoding继承Encoding. 因此,您可以访问Encoding声明的所有静态成员. 实际上,您甚至可以写ASCIIEncoding.UTF8,它仍然可以工作. 即使在调试模式下,它也会编译为相同的IL. 我建议使用Encoding.UTF8,因为它显示出更清楚的事情.
0 2024-04-17
编程技术问答社区
从转义的ASCII序列中读取UTF8/UNICODE字符
我在文件中有以下名称,我需要将字符串读为一个编码UTF8的字符串,因此从中: test_\303\246\303\270\303\245.txt 我需要获取以下内容: test_æøå.txt 您知道如何使用C#? 实现此目标 解决方案 假设您有此字符串: string input = "test_\\303\\246\\303\\270\\303\\245.txt"; 即.字面上 test_\303\246\303\270\303\245.txt 您可以这样做: string input = "test_\\303\\246\\303\\270\\303\\245.txt"; Encoding iso88591 = Encoding.GetEncoding(28591); //See note at the end of answer Encoding utf8 = Encoding.UTF8; //Turn the octal
0 2024-04-17
编程技术问答社区
使用ADO.Net将utf-8写入sql server文本字段,并维护UTF-8字节
我有一些XML编码为UTF-8,我想将其写入SQL Server中的文本字段. UTF-8与文本兼容,因此它应该能够执行此操作,然后读取XML后来仍被编码为UTF-8. 然而,特殊字符(例如äÅö)在UTF-8中的多字节在途中被更改. 我有这样的代码: byte[] myXML = ... SqlCommand _MyCommand = new SqlCommand(storeProcedureName, pmiDB.GetADOConnection()); _MyCommand.CommandType = CommandType.StoredProcedure; _MyCommand.Parameters.Add("xmlText", SqlDbType.Text); _MyCommand.Parameters["xmlText"].Value = Encoding.UTF8.GetString(myXML); _MyCommand.ExecuteNonQuery(
0 2024-04-16
编程技术问答社区
在MySQL中使用Entity Framework时,Unicode字符被替换成基本字符
背景 我注意到,当我通过实体框架从我的MVC网站保存数据时,如果我有类似于希腊语"α"的东西,它将转换为" A". 采取的动作 i Overrode OnModelCreating在数据库上下文中并添加了以下代码. modelBuilder.Properties().Configure(x => { x.HasColumnType("NVARCHAR"); x.IsUnicode(true); }); 这最初看起来很有希望,因为新生成的迁移具有这种结构. AlterColumn("dbo.Item", "Name", c => c.String(maxLength: 800, storeType: "nvarchar")); 运行迁移后,我看到相关列有整理utf8_general_ci. 持续存在的问题 通过我的应用程序保存数据时,这一切都没有改变.从网站传递希腊字符时,它仍然降级到基本等效. 如果我尝试直接通过My
0 2024-04-16
编程技术问答社区
在C#中转换UTF8(带引号的可打印)的问题
我正在从邮箱中提取法国电子邮件,并且电子邮件包含口音.我相信它正在使用UTF8编码. 我尝试了我在Internet上发现的不同的UTF8转换方法,但没有成功. 例如,在c#中,我是如何转换的:montr = c3 = a9al到蒙特利尔? 编辑:另外,它不一致.有时可能就像Montr&Eccute; Al. (刚刚添加了Ampers和Ampers之后的空间,因此浏览器不会转换它.) 谢谢! 标记 解决方案 不是UTF-8.那是引用可打印的可打印,它与UTF-8的编码不一样 - 更多是" ASCII文本到Unicode文本"编码. 引用的可打印将有效地允许您将ASCII消息转换为一个字节数组,然后将其解码为UTF-8. . 我不确定.NET中是否有任何直接支持引用可打印编码,这有点奇怪...我很可能错过了一些东西. 其他解决方案 编码UTF-8将字节(8位数字)的数组转换为字符串(或VICE反之亦然). IE. "数字"和"字符"之间有
0 2024-04-16
编程技术问答社区
如何删除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
编程技术问答社区
是否可以可靠地将用户文件自动解码为Unicode?[C#]
我有一个Web应用程序,允许用户上传其内容以进行处理.处理引擎期望UTF8(并且我正在从多个用户的文件中撰写XML),因此我需要确保我可以正确解码上传的文件. ,由于我的任何用户甚至都知道他们的文件,我会感到惊讶(解码器)使用.因此,我的应用程序必须在解码之前检测到. 这似乎是一个普遍的问题,我很惊讶地找不到解决方案的框架能力或一般配方.可以是我没有使用有意义的搜索词搜索? 我已经实施了bom-waw的检测( BYTE_ORDER_MARK ),但我不确定文件将在带有bom的bom上上传多久以指示编码,这对于大多数非UTF文件都不有用. 我的问题归结为: BOM感知的检测足以满足绝大多数文件? 在BOM检测失败的情况下,是否可以尝试不同的解码器并确定它们是否为"有效" ? (我的尝试表明答案是"否.") 在哪些情况下,"有效"文件将使用C#Encoder/Decoder Framework失败? 在任何地方都有一个存储库,这些存储库中有多种文件,其中包
0 2024-04-15
编程技术问答社区
我应该如何解码UTF-8字符串?
我有一个类似: 的字符串 About \xee\x80\x80John F Kennedy\xee\x80\x81\xe2\x80\x99s Assassination . unsolved mystery \xe2\x80\x93 45 years later. Over the last decade, a lot of individuals have speculated on conspiracy theories that ... 我知道\xe2\x80\x93是仪表板字符.但是我应该如何在C#? 中解码上述字符串 解决方案 扫描输入字符串字符串字符串char和转换值以\x>开始(string string to byte[],然后使用UTF8 decoder)回到string),使所有其他字符保持不变: static string Decode(string input) { var sb = new StringBuilder(); i
0 2024-04-15
编程技术问答社区
使用C#检测文本文件的编码
我有一组将传递给Jekyll项目的Markdown文件,需要使用程序或API找到它们的编码格式,即带有BOM或UTF-8的UTF-8或UTF-8. 如果我通过文件的位置,则必须列出,读取文件,并且应作为结果产生编码. 是否有任何代码或API? 我已经尝试了以有效的方式提到的流读取器的sr.currentencoding,以查找任何文件编码,但结果随记事本++结果的结果而异. . 还尝试使用 https://github.com/errepi/ude/ude )如 https://social.msdn.microsoft.com/forums/forums/vstudio/en-us/862e3342-cc8888-cc88-478f-bca2-bca2-e2-e2-e2-e2-e2-e2-e2de6f60d2f60d2fb/detect-endetect-encodectect-encodecodefilem-codefilem-codefilem? = cs
0 2024-04-15
编程技术问答社区
在.net中的转换。本地Utf-8 <->托管字符串
我创建了这两种方法,将本机UTF-8字符串(char*)转换为托管字符串,反之亦然.以下代码可以完成工作: public IntPtr NativeUtf8FromString(string managedString) { byte[] buffer = Encoding.UTF8.GetBytes(managedString); // not null terminated Array.Resize(ref buffer, buffer.Length + 1); buffer[buffer.Length - 1] = 0; // terminating 0 IntPtr nativeUtf8 = Marshal.AllocHGlobal(buffer.Length); Marshal.Copy(buffer, 0, nativeUtf8, buffer.Length); return nativeUtf8; } string S
0 2024-04-14
编程技术问答社区
如何将xml返回为UTF-8而不是UTF-16
我正在使用序列化的例程.它有效,但是下载到浏览器时,我会看到一个空白页.我可以在文本编辑器中查看页面源或打开下载,然后看到XML,但是它在UTF-16中,这就是为什么浏览器页面显示空白? 如何修改我的序列化器例程以返回UTF-8而不是UTF-16? 返回的XML源: January February March April May June
0 2024-04-14
编程技术问答社区
有什么理由要选择UTF-16而不是UTF-8吗?
检查UTF-16和UTF-8的属性,我找不到任何理由喜欢UTF-16. 但是,查看Java和C#,看起来像UTF-16的字符串和字符默认值.我当时认为这可能是出于历史原因,或者是出于绩效原因,但找不到任何信息. 有人知道为什么这些语言选择UTF-16?我也有任何有效的理由吗? 编辑:与此同时,我也找到了这个答案,它似乎相关并且有一些有趣的链接. 解决方案 东亚语言通常需要在UTF-16中的存储量(2个字节足以容纳99%的东亚语言字符),而不是UTF-8(通常需要3个字节). 当然,对于西部拉格斯来说,UTF-8通常较小(1个字节而不是2个字节).对于HTML(其中有很多标记)等混合文件,这是一个很大的事. 用于用户模式应用程序的UTF-16处理比处理UTF-8容易略容易,因为替代配对的行为与组合字符的行为的行为几乎相同.因此,通常可以将UTF-16作为固定尺寸编码处理. 其他解决方案 @oak:这太长了评论... 我不知道C#(并且真的
0 2024-04-14
编程技术问答社区
Ftp创建一个带有utf-8字符的文件名,如希腊语、德语等。
我正在尝试使用以下代码创建一个FTP服务器的文件(我也尝试使用useBinary选项为true和false) ) string username = "name"; string password = "password"; string remotefolder = "ftp://ftp.myhost.gr/public_html/test/"; string remoteFileName = "δοκιμαστικό αρχείοüß-äCopy.txt"; string localFile = @"C:\test\δοκιμαστικό αρχείο - Copy.txt"; String ftpname = "ftp://ftp.myhost.gr/public_html/test" + @"/" + Uri.EscapeUriString(Program.remoteFileName); FtpWebRequest request = (FtpWebRequest)
0 2024-04-14
编程技术问答社区