首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从R.NET返回的Unicode字符

从R.NET返回的Unicode字符
EN

Stack Overflow用户
提问于 2018-12-20 22:47:44
回答 1查看 296关注 0票数 0

我使用R.NET将一个字符向量从R中的函数返回给C#,唯一的问题是诸如希腊字母之类的unicode字符丢失了。下面的代码行给出了我正在使用的代码的示例:

代码语言:javascript
复制
CharacterVector cvAll = results[5].AsList().AsCharacter();

其中,results是R函数返回的结果列表。字符也由R写入到文本文件中,它们在记事本和其他编辑器中显示良好。我能让R.Net正确地返回字符吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-25 00:18:11

看起来你遇到了一个关于RDotNet的公开问题:https://github.com/jmp75/rdotnet/issues/25

Unicode字符似乎还不受支持。我在调用engine.CreateDataFrame()方法时遇到了同样的问题。它确实返回了一个DataFrame,我所有强调的字符串都是错误的。

不过,似乎有一个解决办法:当调用RDotNet函数时,如果我给出了以我的计算机默认编码(Windows ANSI)编码并从UTF-8转换而来的字符串(重要),R接受它们,并将正确解释的强调字符串返回给C#。我不太清楚为什么它能工作……这可能与用于string的.Net的默认编码UTF-16有关。(请参阅这里:http://csharpindepth.com/Articles/General/Strings.aspx),因此从UTF-8到默认的ANSI的转换似乎是有效的。

下面是一个丑陋的例子:当我构建一个RDotNet DataFrame时,我将CharacterVector中的所有字符串转换为ANSI (从UTF-8)编码的字符串:

代码语言:javascript
复制
try 
{
    string[] colAsStrings = null;
    colAsStrings = Array.ConvertAll<object, string>(uneColonne, s => StringEncodingHelper.EncodeToDefaultFromUTF8((string)s));
    correctedDataArray[i] = colAsStrings;
    columnConverted = true;
}

下面是用于转换的静态方法:

代码语言:javascript
复制
public static string EncodeToDefaultFromUTF8(string stringToEncode)
{
    byte[] utf8EncodedBytes = Encoding.UTF8.GetBytes(stringToEncode);

    return Encoding.Default.GetString(utf8EncodedBytes);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53870917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档