使用C#调用GDAL的OGR读取s57文件,中文乱码问题

问题描述

由于工作需要,本人需要解析电子海图s57文件,经过一个阶段的学习,本人打算采用gdal/ogr来解析,本人是做C#开发的,对于C++不是很了解,解析的时候实现的是gdal/ogr对C#的接口,采用ogrinfo.cs文件进行解析,结果发现,基本的属性都能查询出来,但是,由于s57文件中包含中文文字,解析出来的内容却不是中文,而是乱码。本人想通过编码转换,转成中文文字,但是都不行,最好的状态发现前面的文字是正确的,而后面的不正确,例如"十万吨级锚地",最后通过转成Unicode编码,显示的是"十万吨级**"(**表示显示的是乱码)最后两位不对,这是什么原因呢?有没有高手处理过遇到过这个问题呢?是如何解决的呢?在C++下解决方案也可以解析s57文件可以用iso8211.lib解析,这里面遇到的问题和gdal/ogr一样,因为gdal/ogr中的核心内容就是用的iso8211在这上面解决的也可以呀我调用的是gdal/ogr中的样例代码ogrinfo.cs其中用到了个方法GetFieldAsString该方法返回的是char*如果在C++下,可以考虑直接用wchar*强制转就能显示正常的中文了,但是我是在C#下做的程序gdal/ogr采用的是swig封装,返回的是string显示为乱码,如何写程序才能使乱码变中文呢?我怀疑swig封装之后会不会有损失?

解决方案

解决方案二:
这个问题可能是文件的字符编码问题,挺烦人的。我以前弄shp文件的时候遇到过..当时我是在arcgis里把编码改成utf-8了
解决方案三:
我可以确定就是文件的字符编码的问题,000文件的内容都是单字节的,但是中文是双字节的,在解析的时候,是采用单字节解析的双字节,所以在C++里面直接转就可以了,可是我用的是C#,传出来的是单字节,我在C#中转Unicode出来,开头是正确的,结尾却不对这个问题,太郁闷了,找了很多帖子,都没有一个解决的。
解决方案四:
你好,我最近也在研究S57的内容,请问ogrinfo.cs文件你是从哪里找到的,我只找到C++的文件,但是C++不太了解,还是想用C
解决方案五:
#今天刚看到你的贴子,这个问题我在2003年的时候就遇到了,用的是VC++,S57标准规定只有NATF字段可以存贮本地化文字,采用的是Unicode编码,而中文系统默认的GB2312或GBK,所以要在中文系统中正确显示,需要进行转换,有UnicodeToGbk转换函数可供使用。
解决方案六:
同感,似乎是编码问题
解决方案七:
我也遇到了这个问题,上网搜索了一下,找到了原因:http://blog.csdn.net/liminlu0314/article/details/7330036C#只需要在加载文件前执行下边的语句乱码就不会出现了OSGeo.GDAL.Gdal.SetConfigOption("SHAPE_ENCODING","");//解决中文乱码问题
解决方案八:
您好,我现在也在用C#GDAL读取海图数据,遇到和您一样的问题,请问中文乱码的问题您是如何解决的呢?求指导

时间: 2025-01-28 06:09:05

使用C#调用GDAL的OGR读取s57文件,中文乱码问题的相关文章

php读取txt文件中文乱码解决方法

1:如果打开的页面有乱码,别急,先不要做任何编辑.切记. 2:然后点击菜单修改->页面属性->标题/编码 3:在编码里选择 简体中文(gb2321) 4:点击 重新载入->确定 新建一个记事本(不是写字板哦!),然后将那个要读取的文件全部复制到这个记事本文件中,保存.再用如下代码读取那个记事本文件1303275.txt:发现当网页编码为gb2312时全部正常显示.改为utf8编码后,数字正常,汉字为乱码,这也属于正常 <?php教程    $file = fopen("1

php使用fgetcsv读取csv文件出现乱码的解决方法_php技巧

本文实例讲述了php使用fgetcsv读取csv文件出现乱码的解决方法.分享给大家供大家参考.具体分析如下: 一般来说在php中碰到乱码多半是编码问题,在这里我们实例分析了fgetcsv读取csv文件乱码原因所在与解决方法. 例子如下: 复制代码 代码如下: function get_csv_contents( $file_target ){  $handle  = fopen( $file_target, 'r');  while ($data = fgetcsv($handle, 1000,

java 读取 Excel 数据库中文乱码

问题描述 try { Class.forName(driverName); dbConn = DriverManager.getConnection(dbURL, "", ""); Statement smt = dbConn.createStatement(); ResultSet set = smt.executeQuery("select * from [sheet1$]"); int i =0; while (set.next()) {S

linux环境下php读取csv文件中文读取不到的问题解决办法

在LIUNX环境下PHP读取csv文件的时候,csv文件中的中文不显示.... 终于找到了解决方案,下面和大家分享下! 在执行csv文件读取前加上一句: setlocale(LC_ALL, 'zh_CN'); 瞬间,问题解决了.... 实例: <?phpsetlocale(LC_ALL, 'zh_CN');$handle = fopen("xxx.csv","r");while ($data = fgetcsv($handle, 1000,',')) { ..

soap协议调用Webservice与NuSoap java/C# webservice中文乱码问题

方法一:直接调用  代码如下 复制代码 <?          include('NuSoap.php');       // 创建一个soapclient对象,参数是server的WSDL    $client = new soapclient('http://localhost/Webservices/Service.asmx?WSDL', 'wsdl');       // 参数转为数组形式传递    $aryPara = array('strUsername'=>'username',

PHP读取MYSQL数据库中文乱码的解决方法

最后还是用常见的方法:mysql_query中的"set names charset", 解决了.其中有一点要特别注意:PHP中设置使用"utf8",而不是"utf-8".就这样问题解决了 后来查资料发现了一个解决方法,就是在mysql_connect后面加一句SET NAMES UTF8,即可使得UTF8的数据库消除乱码,对于GBK的数据库则使用SET NAMES GBK,强制设置一下数据库编码即可解决MYSQL中文乱码的问题,代码如下: 解决

【IntelliJ IDEA】从资源文件读取出来就中文乱码的解决方法

在application.properties资源文件中设置两个自定义的属性以及属性值: com.sxd.name = "德玛西亚" com.sxd.want = "王者荣耀"   然后获取资源文件中定义的属性值出现乱码.   解决方法: 在资源文件中添加如下: banner.charset=UTF-8 server.tomcat.uri-encoding=UTF-8 spring.http.encoding.charset=UTF-8 spring.http.en

PHP读取mssql json数据中文乱码的解决办法_php实例

PHP及网页使用UTF-8编码,数据库是sql server2008,使用默认编码(936,即GBK编码) 当读取数据库数据时,使用php自带的json_encode()返回到前端,结果中文不显示. 解决办法如下: 这样,sql server 2008中的中文就可以在网页正常显示了. 如果要将中文正常插入到sql server 2008中,还要加入一条代码:$query = iconv("utf-8", "gbk//ignore", $query);//为了解决中文

图片-jsp中调用java方法,方法中文件路径问题

问题描述 jsp中调用java方法,方法中文件路径问题 我在jsp中了写了java代码调用java类的方法,方法中需要在网页下载一张图片保存 OutputStream os = new FileOutputStream(new File("identityCode/checkimage.JPEG")); 我这样写的,然后一直报 :系统找不到文件路径.路径各种都换了 还是不行 解决方案 解决JSP路径问题的方法jsp路径问题解决方法jsp调用js文件中文乱码问题解决方法 解决方案二: 试