【发布时间】:2010-10-21 14:42:00
【问题描述】:
我正在使用 erlang 和分布式数据库 Mnesia。
我面临的第一个问题是 erlang 的“int list”字符串和 .Net UTF-8 字符串之间的不兼容。
有什么好的转换库吗?
谢谢
【问题讨论】:
-
.NET 字符串在内存中本质上是 UTF-16,而不是 UTF-8。 UTF-8 是大多数 API 使用的默认编码,如果省略编码,仅此而已。
我正在使用 erlang 和分布式数据库 Mnesia。
我面临的第一个问题是 erlang 的“int list”字符串和 .Net UTF-8 字符串之间的不兼容。
有什么好的转换库吗?
谢谢
【问题讨论】:
Erlang 新的R13B 版本对 unicode 有更好的支持。
新的 Unicode 模块记录在 here 中,实现的 Unicode 支持在 EEP 10 (Erlang Enhancement Proposal 10) 中进行了描述。
【讨论】:
据我所见,erlang 使用 UTF32,因此使用 System.Text.Encoding.UTF32 可能会获取列表的整数,然后您需要从中创建列表。虽然没有测试。
以下 sn-p 可能会有所帮助(它会创建一个 unicode ints 数组,该数组应与 erlang 列表的预期匹配):
public static int[] GetIntsForString(string source) {
byte[] data = System.Text.Encoding.UTF32.GetBytes(source);
int[] result = new int[source.Length];
for (int i = 0; i < source.Length; i++) {
result[i] = BitConverter.ToInt32(data, i*4);
}
return result;
}
【讨论】: