不同的操作系统 - 如何使用客户端应用程序读取服务器txt文件

时间:2011-04-13 14:30:47

标签: java servlets file-io utf-8

我正在编写测试应用程序。它由一个小型桌面应用程序和servlet组成。桌面是一个客户端,我想从任何操作系统连接到我的servlet。它是greate但我有一个服务器上的txt文件。我的桌面应用程序为txt文件添加了行(图像文件名)。这些行可能包含像“картинка1.jpg”这样的西里尔字,这是最大的问题,因为我无法将原始的西里尔图像名称返回给我的客户。这使得无法使用其名称下载图像,因为服务器无法识别像“??????? 1.jpg”这样的图像名称将其读回给我的客户端。我知道这是所有的编码问题,但我想知道如何使我的客户端桌面应用程序正常工作以收集我在Linux上的servlet?我的意思是,如果我的客户端和服务器具有不同的本地化和“file.encoding”,我应该怎么做?

好的......接受你的沉默我想解密一些细节...所以我做的事情和我得到的东西都是

  • A)(客户端)我使用JFileChooser来获取 图像文件名(让我们称之为nameX)
  • B)(客户端)我使用httpclient 4和 StringBody(nameX,“utf8”)发送 nameX到我的servlet
  • C)(server)从FileItems获取nameX 并将其写入(添加)到N.txt文件
  • D)(客户端)我得到图像文件 显示的名称列表(以cp1251编码 因为客户支持它)和 选择“nameX”
  • E)(客户端)发送“nameX” StringBody(nameX,“utf8”)标头到 小服务程序
  • F)(服务器)获取nameX但是对于某些人来说 是因为它是这样的 ?????? 1.jpg所以它无法识别 文件名是......

所以我的问题是某个地方回来/以前的编码我想但我不确定...

我已检查过我的服务器编码

  • os.name = Linux
  • sun.jnu.encoding = UTF-8
  • file.encoding = UTF-8
  • user.language = zh

我的客户是:

  • os.name = Windows XP
  • sun.jnu.encoding = Cp1251
  • file.encoding = Cp1251
  • user.language = ru

请帮我理解我做错了什么?

赞赏任何有用的评论:)

1 个答案:

答案 0 :(得分:0)

执行以下操作:

  1. 写入文件时:new BufferedWriter(new OutputStreamWriter(new FileOutputStream(File),“UTF-8”));

  2. 从Web服务器检索图像文件时,请勿在URL中使用除ASCII之外的任何内容。不幸的是,只有ASCII才能在所有Web客户端和服务器上可靠地工作。