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

标签 java servlets file-io utf-8

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

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

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

所以我的问题是某处是后退/之前的编码,我猜但我不确定......

我已经检查了我的服务器编码

  • os.name = Linux
  • sun.jnu.encoding = UTF-8
  • 文件编码 = UTF-8
  • 用户.语言 = en

我的客户是:

  • os.name = Windows XP
  • sun.jnu.encoding = Cp1251
  • 文件编码 = Cp1251
  • 用户.语言 = ru

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

任何有用的评论都会受到赞赏:)

最佳答案

执行以下操作:

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

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

关于java - 不同操作系统 - 如何使用客户端应用程序读取服务器txt文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5650928/

相关文章:

java - Vaadin Spring Boot 找不到 npm 包

java - JDBC set_approle

java - 如何将 JSP <form> 中的值传递到 java 方法中

javax.xml.transform.TransformerException : java. io.FileNotFoundException:<file_name>(访问被拒绝)

c++ - 尝试打开 .txt 文件时程序崩溃

java - 创建新用户帐户并发送电子邮件

java - 创建一个获取 SQLite 数据并插入 Oracle DB 的 java 程序

java - 如何从JSP文件中的对象中提取每个字段?

带有动态类加载的 java CDI 扩展

file-io - 到达eof时,读取行在Lisp中如何工作?