gpt4 book ai didi

c# - 如何在Twitter更新中处理ISO-2022-JP(和其他字符集)?

转载 作者:太空宇宙 更新时间:2023-11-03 18:00:24 24 4
gpt4 key购买 nike

我的应用程序的一部分接受任意文本,并将其发布为Twitter的更新。一切正常,直到发布外部(非ASCII / UTF7 / 8)字符集,然后一切都不再起作用。

例如,如果有人发布:
に投稿できる

它(在我的Visual Studio调试器代码中)变成:
=?ISO-2022-JP?B?GyRCJEtFajlGJEckLSRrGyhC?=


Googling告诉我,这代表(减号?作为分隔符)
=?ISO-2022-JP是文本编码
?B表示它是base64编码的
GyRCJEtFajlGJEckLSRrGyhC?是编码的字符串

为了我的一生,我不知道如何以原始日语字符的形式将此字符串发布为Twitter的更新。从目前的情况来看,向Twitter发送'=?ISO-2022-JP?B?GyRCJEtFajlGJEckLSRrGyhC?='将会导致发布该消息。 Ive还尝试将字符串分成上述片段,使用System.Text.Encoding从ISO-2022-JP转换为UTF8,反之亦然,base64解码但不解码。此外,ive播放状态更新的URL编码,如下所示:


string[] bits = tweetText.Split(new char[] { '?' });
if (bits.Length >= 4)
{
textEncoding = System.Text.Encoding.GetEncoding(bits[1]);
xml = oAuth.oAuthWebRequest(TwitterLibrary.oAuthTwitter.Method.POST, url, "status=" + System.Web.HttpUtility.UrlEncode(decodedText, textEncoding));
}


无论我做什么,结果永远不会恢复正常。

编辑:
最后得到它。对于那些在家中跟随的人,这与最后列出的答案非常接近。只是Visual Studios调试器将我引向错误的方向,而我正在使用Twitter库中的错误。最终结果是这样的:


decodedText = textEncoding.GetString(System.Convert.FromBase64String(bits[3]));
byte[] originalBytes = textEncoding.GetBytes(decodedText);
byte[] utfBytes = System.Text.Encoding.Convert(textEncoding, System.Text.Encoding.UTF8, originalBytes);
// now, back to string form
decodedText = System.Text.Encoding.UTF8.GetString(utfBytes);


谢谢大家

最佳答案

这产生了您要查找的输出:

using System;
using System.Text;

class Program {
static void Main(string[] args) {
string input = "に投稿できる";
Console.WriteLine(EncodeTwit(input));
Console.ReadLine();
}
public static string EncodeTwit(string txt) {
var enc = Encoding.GetEncoding("iso-2022-jp");
byte[] bytes = enc.GetBytes(txt);
char[] chars = new char[(bytes.Length * 3 + 1) / 2];
int len = Convert.ToBase64CharArray(bytes, 0, bytes.Length, chars, 0);
return "=?ISO-2022-JP?B?" + new string(chars, 0, len) + "?=";
}
}


标准很棒,有很多可供选择。 ISO永远不会让您失望,ISO编码至少要有3种。如果遇到问题,请尝试编码50221和50222。

关于c# - 如何在Twitter更新中处理ISO-2022-JP(和其他字符集)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1964042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com