unicode 转换成 UTF-8 怎么转?

OopsJeff 2013-11-12 01:25:59
5bd25047624b673a89814e0a7f51002c51fa77015c3175286f2b6e385305002c00355143003600305146002c0031003051430031003200305146002c56de590d003400360035003200355f00901a0036003051466d4191cf003b56de590d0034003600350032003100305f00901a00310032003051466d4191cf30024e2d56fd75354fe1


以上是unicode字符串内容. 如何转为UTF-8
...全文
1032 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
iyomumx 2014-05-31
  • 打赏
  • 举报
回复
端序问题,用BigEndianUnicode。 对应字符串是
引用
寒假手机要上网,出省就用漫游包,5元60兆,10元120兆,回复46525开通60兆流量;回复465210开通120兆流量。中国电信
转UTF-8字节数组:
			var s = "5bd25047624b673a89814e0a7f51002c51fa77015c3175286f2b6e385305002c00355143003600305146002c0031003051430031003200305146002c56de590d003400360035003200355f00901a0036003051466d4191cf003b56de590d0034003600350032003100305f00901a00310032003051466d4191cf30024e2d56fd75354fe1";
			s = s.Length % 2 == 0 ? s : "0" + s;
			var result = String.Join("", 
							Encoding.UTF8.GetBytes(
								Encoding.BigEndianUnicode.GetString(
									(
										from i in Enumerable.Range(0, s.Length / 2)
										select Convert.ToByte(s.Substring(i * 2, 2), 16)
									).ToArray()
								)
							).Select(b => b.ToString("X"))
						)
						;
			Console.WriteLine(result);
  • 打赏
  • 举报
回复
另外,你的后半句“如何转为UTF-8”我实在是不懂是什么意思?!无法作答。 描述一个问题,要从别人的角度出发,要说一个“流程”而绝不能仅仅停留在标题概念上。你自己虽然努力“蹦出”挺技术化的词儿,但是我觉得如果按字面去理解只能是胡乱猜,你描述根本是“漫无目的”的,无法猜测这应该是什么操作。
  • 打赏
  • 举报
回复
引用 楼主 meiyoudao 的回复:
5bd25047624b673a89814e0a7f51002c51fa77015c3175286f2b6e385305002c00355143003600305146002c0031003051430031003200305146002c56de590d003400360035003200355f00901a0036003051466d4191cf003b56de590d0034003600350032003100305f00901a00310032003051466d4191cf30024e2d56fd75354fe1
以上是unicode字符串内容. 如何转为UTF-8
你已抛出“unicode“这个词儿,就误导了许多容易被误导的人。 在.net平台中,任意字符串你都是unicode的。因此你自要说“字符串内容”就行了,这样人家就知道跟 Ecnoding.Unicode 没有关系了。 你的这个字符串中的内容,是表达byte[]的逐自己进行Hex字符编码。读取它的内容可以使用(例如)这样的转换函数
public static byte[] ToHex(this string hexString)
{
    var datas = new byte[hexString.Length / 2];
    var j = 0;
    for (var i = 0; i < hexString.Length; i += 2)
        datas[j++] = Convert.ToByte(hexString.Substring(i, 2), 16);
    return datas;
}
兴风作浪的梦 2013-11-20
  • 打赏
  • 举报
回复
引用 7 楼 meiyoudao 的回复:
[quote=引用 5 楼 cfxzy 的回复:] 嘿嘿 Encode.Unicode.GetString(UTF8.GetBytes(STRING)); 呵呵
你运行了吗? 不行啊[/quote] 我看着 应该行 我没试过 额 不过我是 只用一个 就是 获取字节 或者 获取字符串
PlatoEternal 2013-11-20
  • 打赏
  • 举报
回复
System.Text.UTF8Encoding.GetEncoding(你的转的字符串)
许文君 2013-11-14
  • 打赏
  • 举报
回复
引用 8 楼 u011781558 的回复:
UTF8.GetBytes( Encode.Unicode.GetString());
+1
u011781558 2013-11-14
  • 打赏
  • 举报
回复
UTF8.GetBytes( Encode.Unicode.GetString());
OopsJeff 2013-11-14
  • 打赏
  • 举报
回复
引用 5 楼 cfxzy 的回复:
嘿嘿 Encode.Unicode.GetString(UTF8.GetBytes(STRING)); 呵呵
你运行了吗? 不行啊
OopsJeff 2013-11-14
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
Encode.Unicode.GetString再UTF8.GetBytes
不行啊.... 转不成中文啊,还是乱码
兴风作浪的梦 2013-11-12
  • 打赏
  • 举报
回复
嘿嘿 Encode.Unicode.GetString(UTF8.GetBytes(STRING)); 呵呵
  • 打赏
  • 举报
回复
一楼正解
小猪八Q 2013-11-12
  • 打赏
  • 举报
回复
如果不需要代码处理的话,copy到Unicode的文本文件中,另存为UTF-8的也可以解决
异常异长 2013-11-12
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
Encode.Unicode.GetString再UTF8.GetBytes
不错。
threenewbee 2013-11-12
  • 打赏
  • 举报
回复
Encode.Unicode.GetString再UTF8.GetBytes

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧