Арабские имена файлов преобразованы в вопросительные знаки - PullRequest
0 голосов
/ 29 июня 2011

У меня есть приложение Spring в одной из форм, предназначенное для загрузки файла Excel.

Приложение сохраняет файл на жестком столе и предоставляет пользователю ссылку для его повторной загрузки.

Если имя файла написано на английском, все идет хорошо, но если имя файла содержит арабские символы, арабские символы файла преобразуются в вопросительные знаки.

Ясно, что проблема связана с кодировкой символов, но я не могу определить, где именно проблема.

Вот структура системы и конфигурации:

  • Операционная система: Centos
  • Сервер приложений: Tomcat
  • конфиги коннектора в server.xml

    [Connector port = "8009" protocol = "AJP / 1.3" redirectPort = "8443" URIEncoding = "UTF-8"]

Ответы [ 3 ]

0 голосов
/ 28 апреля 2014
  1. Вы должны знать, что такое набор символов арабского символа.

  2. Если вы не знаете, вы можете попробовать с UTF-16.

Код для использования следующий:

// output stream
ByteArrayOutputStream bout = new ByteArrayOutputStream();

// input stream
InputStream in = new FileInputSteam("filePath");

// reading buffer
byte[] buffer = new byte[1024];

// 1st read
int bytes = in.read(buffer, 0, buffer.length());

while(bytes != -1) {
   // write buffer
   bout.write(buffer);

   // re-load buffer
   bytes = in.read(buffer, bytes, buffer.length());
}

String yourText = bout.toString(Charset.forName("YOUR_CHARSET"));

// close stream or use JSE7 try-catch-with-resource
in.close();
bout.close();

Наслаждайтесь.

0 голосов
/ 29 июня 2011

Я думаю, что арабский язык не поддерживает язык вашей системы, поэтому попробуйте это .

byte [] utf8Bytes = ("Arabic String"). GetBytes ("arabic");аргумент = новый объект [] {новая строка (utf8Bytes, "UTF8")};System.out.println (аргумент);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...