LINUX DOTNET      Linux DotNET 中文社区

Linux .NET编程与应用技术之专业网站:www.linuxdot.net !     返回首页    
   
[楼主] jws乱码问题

用的sqlite数据库
语言环境为LANG=zh_CN.UTF-8
如果开机后运行jws,再访问asp.net页面,没问题。
设置开机启动jws,再访问asp.net页面,会出现乱码,中文都被"?"代替

作者:匿名   发布时间:09年01月04日   可选操作:删除 回复

[1楼] 回复:jws乱码问题

而且无论浏览器选择什么编码,中文始终是?

作者:匿名   发布时间:09年01月04日   可选操作:删除 回复

[2楼] 回复:jws乱码问题

是否以管理员身份登入后重启jws的?
你的语言环境的设置是在数据库中还是指Linux环境?

我们测试和使用的环境是:
Ubuntu 8.04,Mono 2.0.1,数据库包括PostgreSQL和MS SQL数据库。各个版本的Jexus都进行了测试,不管是开机自动启动还是中途重新启动,都没有任何中文问题。另外,Jexus对ASP.NET的处理是使用Mono的处理机制,所以要注意对Mono进行配置。

要点:
1、网页、数据库存贮格式一定要用UTF8!
2、Mono版本要在2.0以上。

作者:mononet   发布时间:09年01月04日   可选操作:删除 回复

[3楼] 回复:jws乱码问题

另外,可以强制编译器使用指定的UTF8编码对文件进行编译,这个方法很对解决乱码很有效,方法是在Web.config文件中加入或修改下面的字段:
<system.web>
......
  <compilation debug="false" defaultLanguage="c#">
      <compilers>
        <compiler language="cs;c#;csharp" extension=".cs" compilerOptions="/codepage:utf8" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0" />
      </compilers>
.......

作者:mononet   发布时间:09年01月04日   可选操作:删除 回复

[4楼] 回复:jws乱码问题

linux环境是zh_CN.UTF-8
sqlite3 是 utf-8
网页输出指定也是utf-8

问题是,电脑启动后,再启动jws,显示一切正常。
但设置jws随系统自动启动,所有中文均变成问号。即使指定utf-8编码。

作者:匿名   发布时间:09年01月04日   可选操作:删除 回复

[5楼] 回复:jws乱码问题

    是环境的问题,Linux启动的系统环境与用户环境是有区别的。最简单的解决方法是在Web.config中把编译环境设为UTF8。
    我们在Mono1.6版时就进行了关于汉字显示方面的实验,结果是,只要网页、数据库设为UTF8,同时在Web.config中把编译的代码页也指定为UTF8,(可以不管Linux的字符集环境),那么,汉字、日文等等双(多)字节文字,在浏览器中都能正常显示!

作者:linux dotnet   发布时间:09年01月04日   可选操作:删除 回复

[6楼] 回复:jws乱码问题

数据库,web.config,网页均为utf8,但依然乱码。不仅jws如此,xsp也是如此。奇怪的是,登录系统后再启动jws或xsp又是正常。有没办法,让服务在用户登录后才自动启动呢

作者:匿名   发布时间:09年01月07日   可选操作:删除 回复

[7楼] 回复:jws乱码问题

过去,linuxdot.net在使用xsp时,也出现过这个情况,其实,乱码问题根本就与Jexus或XSP等没有关系,问题的根源在Linux环境语言和Mono编译应用程序时的代码页选择。
就WEB服务器而言,不出现乱码的关键是三点:
1、网页用UTF8;
2、数据库用UTF8;
3、Web.config中,把编译的代码页也设为UTF8。
注:不是web.config文件本身用UTF8编码,而是在Web.config中,把编译时的代码页设为UTF8(请见3楼的具体设置),这一点很重要。最彻底的解决办法是把编译所用的代码页参数放到 /usr/etc/mono/2.0/Web.config 这个文件中。
当然,也可以不用UTF8,用其它的多字节代码页也行,设置方式与前面设为UTF8的方式一样。
另外,建议Linux用Ubuntu服务器程序,它对utf8支持得很好。

作者:linuxdot.net   发布时间:09年01月07日   可选操作:删除 回复

[8楼] 回复:jws乱码问题

很可惜,能改的都能改了,什么重建数据库,重建工程,全部改成utf8,但问题依然。在win2003下一切正常。但在配置编译选项时,设定/codepage:utf8会出错,说代码页“utf8”无效或未安装。

症状:如果web服务器随系统启动,显示乱码。如果web服务器在系统启动后再启动,显示正常,但插入的数据仍然乱码。

我用的是odbc连接,用ubuntu8.04桌面版的升级安装.
sudo apt-get install libsqliteodbc
sudo apt-get install unixodbc-bin
然后用ODBCConfig 来配置数据源。
不知是否跟odbc有关。
或者能否将您的测试程序打包让我下载测试一下。

作者:匿名   发布时间:09年01月07日   可选操作:删除 回复

[9楼] 回复:jws乱码问题

http://218.13.92.233/
这是我的测试地址

作者:匿名   发布时间:09年01月07日   可选操作:删除 回复

[10楼] 回复:jws乱码问题

"设定/codepage:utf8会出错"的解决,把代码页在web.config中设好后,上传到服务器。然后,在vs200X中写代码时,把那个代码页设置部分去掉或屏敝掉。
最好的办法是在/usr/etc/mono/2.0/Web.config中修改编译的代码页,而不在网站的web.config中修改,这样,在windows与VS中就没有出现错误。

作者:linuxdot.net   发布时间:09年01月07日   可选操作:删除 回复

[11楼] 回复:jws乱码问题

怎么用得着ODBC呢?Mono直接支持SQLite!
刚才看了你的网页,网页本身的中文字能够正常显示,这说明Mono工作很正常。乱字符出在从数据库中读出来的中文字,因此,关键就在这儿了!请直接使用SQLite的Dotnet链接器,不要用什么ODBC,可能是ODBC出了问题!!
Sqlite的dotnet连接用Mono.Data.Sqlite名字空间。

作者:linuxdot.net   发布时间:09年01月07日   可选操作:删除 回复

[12楼] 回复:jws乱码问题

另外,从你网页出错的提示中可以看出,你已经用的是Mono2.0或2.0.1版,而2.0及以上版本无需设置UTF8代码页了。

你的架构是Ubuntu+Mono+Jexus+SQLite,那么,建议把/usr/lib/mono/gac/Mono.Data.Sqlite/2.0.0.0__0738eb9f132ed756 和 /usr/lib/mono/gac/Mono.Data.SqliteClient/2.0.0.0__0738eb9f132ed756中的dll文件复制到你网站的bin目录内,直接用Mono.Data.Sqlite或Mono.Data.SqliteClient进行设计。
尽量少用中间环节!

作者:linuxdotnet   发布时间:09年01月07日   可选操作:删除 回复

 
   
   

留言回复:
标题: * 标题必填
作者:   * 请填上你的名字  
操作键:   * 填入几个字母表示是您写的,便于进一步操作
发言内容:
 
发贴者须知:
1、您无需注册即可发贴,但是,贴子内容必须在法律法规和社会公德所允许的范围内;
2、本站专注IT技术,谢绝包括政治、社会、情感等任何与IT技术无关的贴子在本站发表;
3、本站保留对任何贴子进行删除、禁用、更改、举报、追究等所有权利;
 
今天是: 周七  周三  周二  周一  周四  周五  周六