拖拉机提升器维修图解:用smartupload下载文件时,中文文件名是乱码的问题

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 07:18:58
我写的jsp网站中用smartupload上传、下载文件。当遇到文件名为中文时,下载下来的文件名总是乱码。这个问题怎么解决啊。在网上查了好多资料,结果都不管用的。

vb的保存文件名以前也有这个BUG 可以换新版本的软件 打补丁 修改程序 用Unicode编码中文
从计算机发展的初期,对字符的定义与处理的问题就一直存在。人们提出了代码页的概念,允许不同的语言使用不完全一样的编码。随后人们陆续提出了多种多字节编码方案,统称“宽字符集”编码方案。Unicode是较成功的一种。由于Unicode用一个16位的值来表示每个字符,因此总共可以得到65000个字符,这样它就能对世界各国的书面文字中的所有字符进行编码。

typedef unsigned short wchar_t;
定义Unicode字符、指向Unicode字符串的指针和Unicode字符数组方法如下:
wchar_t wChar='W';
wchar_t *wPoint=L"This is a Unicode string.";
static wchar_t wChar[]=L"This is a unicode string.";
所有字符串处理函数都需要重新定义一个新的版本来支持Unicode。为了维护代码的统一性,Microsoft公司提供了TCHAR.H头文件来实现对单子节和双字节字符串的统一处理,使用该文件中定义的字符串处理函数,可以根据是否定义了UNICODE宏来分别处理Unicode字符集或单字节字符集。
#ifdef_UNICODE
#define_tcslen wcslen
#else
#define_tcslen strlen
#endif

#ifdef_UNICODE
typedef wchar-t TCHAR;
#else
typedef char TCHAR;
#endif

#ifdef_UNICODE
#define_T(x) L##x
#endif

#define_T(x) _T(x)
#define_TEXT(x) _T(x)
这三个宏都具有将单字节字符串转换为双字节字符串的功能。
Windows98像它的前任产品一样,几乎都是用ANSI字符串来进行所有内部操作的。虽然可以编写用于处理Unicode字符的字符串的Windows98应用程序但十分困难。仅有少数Windows API函数可以在Windows98下正常运行,如MessageBox函数。
Windows2000始终注意了对Unicode的支持,用于创建窗口、显示文本、进行字符串操作的所有核心函数都需要Unicode字符串。如果调用任何一个Windows函数并给它传递一个ANSI字符串,那么系统首先将字符串转换成Unicode,然后将Unicode字符串传递给操作系统。如果希望函数返回ANSI字符串,那么系统首先将Unicode字符串转换成ANSI,然后将结果返回给用户的应用程序。所有这些操作都是在用户看不见的情况下发生的。WINNT.H文件负责提供对Unicode的支持。在WINNT.H中,分别为单字节和双字节编码定义了两套数据结构并在此基础上定义了一套统一的数据结构。
如果明确需要编写ASCII编码的程序,就使用单字节编码的数据类型体系;如果明确需要编写Unicode编码的程序,就使用双字节编码的数据类型体系,而由将来是否定义了UNICODE来决定解释为何种编码。