SDE API 问题 ansi UNICODE!
由于:
ArcCatalog 里面 设置类型为 text
Oralce中转为 nvarchar 或 nvarchar2
SDE API 中为 SE_NSTRING_TYPE
所以这个 LONG SE_stream_set_string(SE_STREAM stream,SHORT column,const CHAR *string_val); 就不能正常使用了
对 ArcCatalog 里面类型设为为 text 的字段赋值就需要使用
SE_stream_set_nstring (SE_STREAM stream, SHORT column, const SE_WCHAR *string_val);(现在可以使用,不过有乱码,编码不会转换)
现在问题又遇到新的问题了。。就是字符编码转换的了
有什么办法可以转换成 UNICODE ,使用SE_stream_set_nstring 存储到数据库中,
而且数据库没有乱码。
问题解决了。。
申明部分
[DllImport(".\\sde.dll", SetLastError = true, ThrowOnUnmappableChar = true)]
public static extern Int32 SE_stream_set_nstring(IntPtr pSDE_Stream, int column, Byte[] string_val);
引用部分
string STRING_VAL = "测试";
UnicodeEncoding unicode = new UnicodeEncoding();
Byte[] encodedBytes = unicode.GetBytes(STRING_VAL);
iRc = Stream.SE_stream_set_nstring(pSDE_Stream, 3, encodedBytes);
这样字符插入到数据库中就没有乱码了。
这个页面里面有9.2 Unicode方面的说明
http://edndoc.esri.com/arcsde/9.2/api/unicode/unicodesupport.htm

浙公网安备 33010602011771号