иностранные символы в имени файла на Android - PullRequest
2 голосов
/ 26 августа 2011
File outputFile = new File(path, clickedKey+".txt");
OutputStream fos = new FileOutputStream(outputFile);
fos.write(data.getBytes());
fos.close();

Этот фрагмент кода работает, когда путь не содержит символов, таких как: «ąóźżę» (специальные символы из польского языка). Если путь содержит какой-либо из них, fos.write работает, но эффекта нет (новый файл не создается с «чужим» именем пути, а путь существует). Мой вопрос: что я могу сделать, чтобы это исправить?

Такие менеджеры файлов, как «Astro», «Диспетчер файлов» и т. Д., Работают без каких-либо проблем с такими персонажами.

Я пытаюсь также это:

Charset charset = Charset.forName("UTF-8");
CharsetEncoder encoder = charset.newEncoder();
CharsetDecoder decoder = charset.newDecoder();

ByteBuffer bbuf = encoder.encode(CharBuffer.wrap(clickedKey+".txt"));
CharBuffer cbuf = decoder.decode(bbuf);
String s = cbuf.toString();

bbuf = encoder.encode(CharBuffer.wrap(path));
cbuf = decoder.decode(bbuf);
String path_s = cbuf.toString();

File outputFile = new File(path_s, s);
OutputStream fos = new FileOutputStream(outputFile);
fos.write(tab.getBytes());
fos.close();

но это не сработает.

Ответы [ 2 ]

2 голосов
/ 27 августа 2011

Когда мой телефон был подключен через ADB, и я проверял новые файлы с помощью DDMS, не было никакого файла с «внешним» путем.Но на самом деле файлы были в телефоне!

Я проверил, с файловым менеджером прямо в моем телефоне :) Это странно.Но я решил проблему.

0 голосов
/ 26 августа 2011

Вы проверяли кодировку?в затмении: Edit> set Encoding> utf-8 или 16

...