c#数据表数据类型到UTF32

c#数据表数据类型到UTF32,c#,datatable,type-conversion,utf-32,C#,Datatable,Type Conversion,Utf 32,我有一个挑战性的问题。我目前正在从SQL中获取datatable,它具有EM-DASH和datatable不支持的其他特殊字符,除非类型为UTF32。有没有办法将数据类型从字符串转换为UTF32 有一个FillDataTable函数,它从SQL读取查询并填充表。请注意,所有列都是字符串格式。这就是我到目前为止所做的: var dt = FillDataTable(query).Copy(); DataTable dtClone = table.Clone(); dtClone.Columns[0

我有一个挑战性的问题。我目前正在从SQL中获取datatable,它具有EM-DASH和datatable不支持的其他特殊字符,除非类型为UTF32。有没有办法将数据类型从字符串转换为UTF32

有一个FillDataTable函数,它从SQL读取查询并填充表。请注意,所有列都是字符串格式。这就是我到目前为止所做的:

var dt = FillDataTable(query).Copy();
DataTable dtClone = table.Clone();
dtClone.Columns[0].DataType = typeof(System.Text.UTF32Encoding);
dtClone.Columns[1].DataType = typeof(System.Text.UTF32Encoding);
foreach (DataRow r in dt.Rows)
dtClone.ImportRow(r);

然而,这不起作用。有没有办法这样做,使它保持在大头钉的字符串?否则,em破折号将成为隐藏符号,因为它使用UTF8

我不明白你的最后一句话。Em dash(U+2014)很容易用UTF-8表示(所有Unicode字符都是),甚至在BMP中也是如此。你到底在观察什么?“四个关键因素——国家分配”——这是假设为“四个关键因素——国家分配”时的结果,你到底是如何确定的?例如,您是否检查过调试器中的字符串?我不明白你为什么认为使用不同的编码会有帮助。是的,在这个字符串中有一个特殊的编码,因为当我把数据表复制到excel中时,字符(不可见)就像一个向上向下的问号。我相信,如果数据表的日期类型是UTF-32,那么应该可以解决这个问题。我的假设是,它将字符从原始字符切换到特殊字符-当我尝试使用相同字符串按该列进行搜索时,它找不到它。。我将不得不使用上下问号-这是一个有点困惑的解释让我知道,如果你仍然困惑。是的,我非常困惑,你认为UTF-32是如何进入这个。。。而且我绝对不会开始依赖“当你把它粘贴到Excel中时会发生什么”作为一个很好的指示。你应该仔细检查调试器中的值。我不明白你的最后一句话。Em dash(U+2014)很容易用UTF-8表示(所有Unicode字符都是),甚至在BMP中也是如此。你到底在观察什么?“四个关键因素——国家分配”——这是假设为“四个关键因素——国家分配”时的结果,你到底是如何确定的?例如,您是否检查过调试器中的字符串?我不明白你为什么认为使用不同的编码会有帮助。是的,在这个字符串中有一个特殊的编码,因为当我把数据表复制到excel中时,字符(不可见)就像一个向上向下的问号。我相信,如果数据表的日期类型是UTF-32,那么应该可以解决这个问题。我的假设是,它将字符从原始字符切换到特殊字符-当我尝试使用相同字符串按该列进行搜索时,它找不到它。。我将不得不使用上下问号-这是一个有点困惑的解释让我知道,如果你仍然困惑。是的,我非常困惑,你认为UTF-32是如何进入这个。。。而且我绝对不会开始依赖“当你把它粘贴到Excel中时会发生什么”作为一个很好的指示。您应该在调试器中仔细查看该值。