Topic: Solaris下Smartupload上传文件文本出现乱码.

  Print this page

1.Solaris下Smartupload上传文件文本出现乱码. Copy to clipboard
Posted by: momocha
Posted on: 2004-09-27 17:41

在windows下sqlserver2000可以正常.
现换在Solaris,mysql,jsp页面编码utf-8,但客户端如果设置form的ENCTYPE="multipart/form-data"> 再用Smartupload的request取得的值是乱码,转码也试了,不行,希望得到指点..

2.Re:Solaris下Smartupload上传文件文本出现乱码. [Re: momocha] Copy to clipboard
Posted by: iqueen
Posted on: 2004-09-27 17:49

转码后应该没有问题了啊,除非不需要转码。

3.Re:Solaris下Smartupload上传文件文本出现乱码. [Re: momocha] Copy to clipboard
Posted by: scud
Posted on: 2004-09-27 21:31

如果不想改smartupload,那就设置solaris的locale 为zh_CN / utf-8 ?

也就是启动你的server的java的环境的编码和网页的一样

因为smartupload取内容的时候是new String(byte[])的,如果用new String(byte,encoding)就好了

当然可以自己改改smartupload

4.Re:Solaris下Smartupload上传文件文本出现乱码. [Re: momocha] Copy to clipboard
Posted by: momocha
Posted on: 2004-09-28 10:00

Solaris系统我不熟,自放上去后,页面编码设为gb2312出现乱码,设utf-8后正常(原来是gb2312).
smartupload从页面取过来就是乱码了,我再把取过来的字符用new String(str.getBytes("iso8859-1"),"gb2312")或 new String(str.getBytes("utf-8"),"gb2312"),都不行,而直接用servlet的request直接取都是正确的.我也怀疑Solaris系统设置的问题.

5.Re:Solaris下Smartupload上传文件文本出现乱码. [Re: momocha] Copy to clipboard
Posted by: scud
Posted on: 2004-09-28 10:47

下面2种方法选其一即可,第二种更通用

1.找服务器管理员改 系统编码,很简单

2.修改smartupload 里面new String 相关的地方 ()

大概有3处,new String的地方,指定编码即可,当然编码这个变量你可以写在配置文件里,或者通过其他方式获取

File.java里面的
String strTMP = new String(m_parent.m_binArray, m_startData, m_size);

SmartUpload里面的 getDataHeader 有一处

String dataHeader = new String(m_binArray, start, (end - start) + 1);

upload()里面有一处

都改成类似

String sValue = new String(aBinArray, nStart, nLen, m_streamCharsetEncode); 的方式

其中m_streamCharsetEncode是设置的编码

当然还可以设置选项决定是否转换

6.Re:Solaris下Smartupload上传文件文本出现乱码. [Re: momocha] Copy to clipboard
Posted by: scud
Posted on: 2004-09-28 15:26

Solaris 8 如何改变缺省的语言环境
本文出自: http://docs.sun.com (2001-06-14 09:04:00)
术语"语言环境"和"种类"有如下关系:
语言环境包括语言规范、地域、代码集和其它特征。简体中文 Solaris 操作环境包括下列语言环境:

C--对英文 ASCII 环境,该语言环境必须设置为 C。
zh--对简体中文 EUC 环境,该语言环境必须设置为 zh。
zh.GBK--对简体中文 GBK 环境,该语言环境必须设置为 zh.GBK。
zh.UTF-8--对简体中文 Unicode 环境,该语言环境必须设置为 zh.UTF-8。
.种类是组成语言环境的特征集。例如,字符显示或时间/日期的表达,其性能取决于 语言环境 。简体中文 Solaris 种类包括下列内容:
LC_CTYPE 设置分类和转换的字符类型。
LC_TIME 设置用于表达日期和时间的语言环境。
LC_NUMERIC 设置数字表达的语言环境(也用于 I/O)。
LC_MONETARY 设置货币表达的语言环境。
LC_MESSAGES 设置给用户的消息的语言环境。
LC_COLLATE 设置取决语言环境的字符串校对。
环境变量 LC_ALL 明确为所有种类设置相同的语言环境;它有最高级优先权。如果种类或 LC_ALL 未设置,则 LANG 环境变量将决定种类设置。
用户可使用 shell 环境变量来改变语言环境设置。每个种类命名一个现有的语言环境。setlocale() 函数直接设置或查询这些种类的设置。国际化的功能使用这些设置来访问所需语言环境相应的表。
环境变量可用以间接设置种类:当 setlocale() 将种类设置为该地点的缺省设定值时,它使用每个环境变量的设定值来设置相关种类。setlocale() 函数不改变环境变量的设定值,只是读取它们的设定值。

可用下列步骤改变系统范围的缺省语言环境。
1.通过添加或改变此行以编辑 /etc/default/init 文件。
用 C、zh、zh.GBK 或 zh.UTF-8 替换 locale。
LANG=locale

2.使所有用户退出 CDE。
3.键入下列命令:
%su
# /usr/dt/bin/dtconfig -kill
4.键入下列命令:
% su
# reboot

7.Re:Solaris下Smartupload上传文件文本出现乱码. [Re: momocha] Copy to clipboard
Posted by: momocha
Posted on: 2004-09-29 09:57

谢谢scud,我试试看..


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923