Lazarus解决含中文文件名或路径的使用问题
其实用lazarus很久(也不算久啦。。),目前打算做完手头的最后一个小程序然后就转向c#窗体程序。。之前用lazarus的时候出了很多问题,资料也不是很好找,所以这回把比较容易说的记下来省得忘掉。
Lazarus读取中文文件名并显出来这个过程并没多大问题,但是实际会出现各种各样的问题。比如加载一个路径或标题包含中文的文件,软件显示出来的路径甚至正常但是就是不能正常使用文件。那么,先上解决方案好了。。
当你获取文件路径时,这样处理文件路径:
pathvar:=utf8toansi(FilePath);
这样之后,使用文件时就可以通过pathvar调用文件而不出错。不过,如果这样处理后,想要在窗体中显示文件名,你还需要做如下工作:
Label1.Caption:=ansitoutf8(FilePath);
实际使用时,你需要使用的是转为ansi的路径字符串,但是为了显示不出乱码,你需要将处理过的路径在显示时转回utf8.
我的某个程序中的一部分代码(节选):
with OpenDialog1 do
begin
Filter:='TGE GUI File(*.gui)|*.gui';
DefaultExt:='gui';
FileName:='';
Options:=[ofHideReadOnly,ofEnableSizing];
if Execute then
if ofExtensionDifferent in Options then
Options:=[ofHideReadOnly,ofEnableSizing]
else
begin
filepath:=utf8toansi(FileName); //*1
end;
end;
end;
Label1.Caption:=ansitoutf8(filepath); //*2
if not FileExists(PChar(filepath)) then exit; //*3
assignfile(guiFile, filepath);//'test.gui'
reset(guiFile);
assignfile(guiFile, filepath);//*4
reset(guiFile);
上面的代码中,FileName就是直接获取到的文件的路径,在一开始(*1)用filepath记录了变量。之后在下面(*2)为了显示正常而转回utf8用语Label的显示,之后在(*3和*4)的调用中,直接使用了filepath。这样就是正常的了。
以上是上面所摘抄部分代码的原来的程序执行时的样子。
Lazarus解决含中文文件名或路径的使用问题的更多相关文章
- TCPDF解决保存中文文件名的方法
PHP使用TCPDF生成PDF文件时,如果文件名是中文会被直接过滤掉,以下是TCPDF不能保存中文文件名的解决方法: 打开tcpdf.php文件,找到output函数,大约在8467行 或(7554) ...
- wordpress上传含中文文件名出现乱码
一.首先到FTP里面找到wp-admin/includes/file.php这个文件. 二.查找wp_handle_upload在文件里面找到以下代码. function wp_handle_uplo ...
- 解决 git 中文路径显示 unicode 代码的问题
解决 git 中文路径显示 unicode 代码的问题 当被修改的文件中带有中文字符时,中文字符会被转换为 unicode 代码,看不出原来的文件名. 这时,只要配置 :: git config -- ...
- 完美解决ExtJs6上传中文文件名乱码,后端SpringMVC
ExtJs上传中文文件名乱码,观察请求. ExtJs6上传乱码从后台无法解决,因为文件名请求里面就已经乱码了,后台无法解码. 除非请求参数正确没有乱码,后台因为编码设置不一样,可以通过后台处理乱码 这 ...
- PHP中file_exists()判断中文文件名无效的解决方法
php中判断文件是否存在我们会使用file_exists函数或is_file函数,但在使用file_exists时如果你文件名或路径是中文在uft8编码文档时是无效.本文就来解决此问题,下面我们一起来 ...
- 解决NTKO Office中文文件名保存到服务器时出现乱码的问题
再使用NTKO office控件时,在ntko往服务器提交文件时,中文文件名会出现乱码的问题! 其实解决这个问题可以换一种思路,在ntko往服务器提交文件时英文肯定是不会出现乱码的问题的! 那么想办法 ...
- 解决file_get_contents遇到中文文件名无法打开问题
利用file_get_contents打开文件或采集远程服务器文件如果文名或url中碰到汉字中文那么会出现failed to open stream:Lnvalid argument in错误. ...
- Sublime text 3 中文文件名显示方框怎么解决?
如图,中文文件名打开全是乱码,内容倒是装了converttoutf8没什么太大的问题. -------------------------------------------------------- ...
- 【转】Sublime text 3 中文文件名显示方框怎么解决
引用自:http://www.zhihu.com/question/24029280 如图,中文文件名打开全是乱码,内容倒是装了converttoutf8没什么太大的问题. 这个是sublime te ...
随机推荐
- JAVA File类 分析(三)
前面两篇与大家一起研究了unix下的文件系统,本篇将和大家一起分析 文件的属性和文件夹. ok,废话不说,先来段代码 #include <stdio.h> #include <sys ...
- iOS 动态加入button
按现有的button之后自己主动创造一个新的button,并为新button加入事件,因此,当您单击弹出提示框. 于viewcontroller.h添加 @property (weak, nonato ...
- Swift中的集合类型
一.引子: 在2014年10月TIOBE编程语言排行榜中,Swift位居第18位,从2014WWDC发布会首次公布至今不到半年时间,swift一直受到编程人 员的追捧,其热衷程度并不亚于当红巨星Tay ...
- c# 校验文本框的正则
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #region ...
- Java中 map.values转换为list或者string[]
@Test public void testMap2List() throws Exception{ Map<String, String> map = new HashMap<St ...
- Spring-----Spring对AOP的支持
转载自:http://blog.csdn.net/hekewangzi/article/details/51713002
- mysql server advanced 5.6基于oracle linux 6.6的安装
mysql 安装有两种,rpm安装和源码包安装,两种包都可以从www.mysql.com官网下载,这次我测试下rpm安装方式. 1.安装环境以及mysql版本: 1.1vcenter 虚拟机环境 1. ...
- Linux 终端颜色高亮
昨天在改一些东西时,不小心将root下的一些配置文件删掉了.导致启动终端后,字完全一个颜色,没有区分.在网上找到的都是 改整体颜色的.但实际上这时应该搜Linux终端高亮才能找到解决办法.在这里再列出 ...
- 转载 java枚举类型enum的使用 (原文地址:http://blog.csdn.net/wgw335363240/article/details/6359614)
java枚举类型enum的使用 最近跟同事讨论问题的时候,突然同事提到我们为什么java中定义的常量值不采用enmu枚举类型,而采用public final static 类型来定义呢?以前我们都是采 ...
- 在HTML中使用JavaScript需要注意的问题
1. 通过<script>元素的src属性可以包含来自外部域的js文件,这一点与<img>元素一样,但这让<script>元素倍显强大的同时又受争议,访问外部域js ...