C#中是否存在可以将Quoted-Printable编码转换为String?的现有类?单击上面的链接以获取有关编码的更多信息.
为方便起见,以上链接引用了以下内容.
任何8位字节的值可以与3个字符,被编码的"="随后两个十六进制数字(0-9或A-F)表示的字节的数值.例如,US-ASCII换页符(十进制值12)可以用"= 0C"表示,US-ASCII等号(十进制值61)用"= 3D"表示.除了可打印的ASCII字符或行尾字符之外的所有字符都必须以这种方式编码.
除"="(十进制61)外,所有可打印的ASCII字符(33到126之间的十进制值)可以由它们自己表示.
ASCII选项卡和空格字符,十进制值9和32,可以由它们自己表示,除非这些字符出现在一行的末尾.如果其中一个字符出现在一行的末尾,则必须将其编码为"= 09"(制表符)或"= 20"(空格).
如果正在编码的数据包含有意义的换行符,则必须将它们编码为ASCII CR LF序列,而不是其原始字节值.相反,如果字节值13和10具有除行尾之外的含义,则它们必须被编码为= 0D和= 0A.
引用可打印编码数据的行不得超过76个字符.为了在不改变编码文本的情况下满足该要求,可以根据需要添加软换行符.软换行符在编码行的末尾包含"=",并且不会在解码的文本中导致换行符.
我正在尝试使用下面的代码来发送消息System.Net.Mail,有时会得到像'=?utf-8?B?W3AxM25dIEZpbGV...'(修剪过)这样的主题.这是被称为的代码:
MailMessage message = new MailMessage()
{
From = new MailAddress("someone@somewhere.com", "Service"),
BodyEncoding = Encoding.UTF8,
Body = body,
IsBodyHtml = true,
ReplyTo = new MailAddress("do.not.reply@somewhere.com"),
SubjectEncoding = Encoding.UTF8
};
foreach (string emailAddress in addresses)
{
message.To.Add(new MailAddress(emailAddress.Trim(), "Person"));
}
message.Subject = subject;
Run Code Online (Sandbox Code Playgroud)
我想强调,这不会一直发生.
我究竟做错了什么?
是否有一种在C#中处理多部分MIME数据的简洁方法.
在调用已关闭的应用程序(我无权更改它)后,我得到一个类似下面的MIME响应.C#是否提供通过System.Net.Mime或System.Net.Mail解析此功能的能力?
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_Part_42_31322961.1286389502467"
------=_Part_42_31322961.1286389502467
Content-Type: text/xml
Content-Transfer-Encoding: 7bit
Content-ID: <xmlContextInfo>
<UnneededXML> <Stuff> </Stuff> </UnneededXML>
------=_Part_42_31322961.1286389502467
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <myImage>
/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a
Run Code Online (Sandbox Code Playgroud)
从响应中我真正需要的是"myImage"部分(比上面显示的要长得多)
在没有详细介绍的情况下,我有一个C#WCF应用程序,它是我调用的基于XML的API的包装器.该API返回一个字符串,它实际上只是一个XML文档.然后我解析该XML,然后返回它.返回的信息在浏览器中显示为JSON.
有点令人困惑,但这里有一些采样代码:
[OperationContract]
[WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare,
ResponseFormat = WebMessageFormat.Json, UriTemplate = "/TestGetUser")]
TestGetUserResponse TestGetUser();
/* ... */
[DataContract(Namespace = "http://schema.mytestdomain/", Name = "TestGetUser")]
public class TestGetUserResponse
{
[DataMember]
public User User { get; set; }
[DataMember]
public Error Error { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并TestGetUser存在:
public TestGetUserResponse TestGetUser() {
WebClient client = getCredentials(); // getCredentials() method is defined elsewhere
string apiUrl = "http://my.api.url.com/API";
string apiRequest = "<?xml version='1.0' encoding='utf-8' ?><test>My XML Request Lives Here</test>";
string …Run Code Online (Sandbox Code Playgroud) H,我有从 htm 文件中获得的字符串
String s = "%u05d9%u05e8%u05d5%u05e9%u05dc%u05d9%u05dd"
Run Code Online (Sandbox Code Playgroud)
它是 UTF8 代码值希伯来字符,我想将其转换为真正的字符串,我可以将其写入文件并具有含义(而不仅仅是字符集的代码值)。
我尝试这样做,但它不起作用 -
byte[] bytes = Encoding.UTF8.GetBytes(s);
addr = Encoding.UTF8.GetString(bytes);
Run Code Online (Sandbox Code Playgroud)