Revit导出IFC格式时中文转码规则
当我们使用Revit导出包含中文的文件时,软件会把里面的中文转换成一串字符保存。如“族 1” 会转化为“\X2\65CF\X0\ 1” 。
这个编码是将中文转化为16进制的UTF-16的编码。并以\X2\为开头,\X0\为结尾。非中文字符则直接使用。
public static string ToUnicode(string str)
{
Encoding unicode = Encoding.Unicode;
StringBuilder sb = new StringBuilder();
bool b=false;
foreach (var c in str)
{
if (c >= 0x4E00 && c <= 0x9FFF)
{
if (!b)
{
sb.Append("\\X2\\");
}
b = true;
byte[] unicodeBytes = unicode.GetBytes(c.ToString());
sb.Append(unicodeBytes[1].ToString("X"));
sb.Append(unicodeBytes[0].ToString("X"));
}
else
{
if (b)
{
sb.Append("\\X0\\");
b = false;
}
sb.Append(c);
}
}
if (b)
{
sb.Append("\\X0\\");
}
return sb.ToString();
}