Ответ 1
ОБНОВЛЕНИЕ для U + 30FB (КАТКАНА СРЕДНИЙ ДОТ):
Как @sergey-tachenov укажите, что проблема связана с U+30FB
(KATAKANA MIDDLE DOT), тогда ее необходимо решить. По этой причине я хотел бы поделиться некоторыми предыдущими проектами и предложениями.
Предложение-1:
Один из моих проектов, мы делаем несколько руководств для проекта. Руководство было на разных языках. Там у нас такие же проблемы. Мы использовали Lotus Notes
. В этом случае мы сделали несколько фильтров, которые изменили эти символы или глифы на точку. После этого примечания лотоса создают папку и имя файла, которые позже используются в качестве пути. Таким образом, эта проблема была решена таким образом. Если у вас есть этот тип опции, вы можете легко исправить.
Предложение-2:
Различные люди сталкиваются с такими же проблемами. Поэтому они пытались разными способами.
Некоторые говорят,
- заменив его точкой (.), решила проблему.
-
KATAKANA MIDDLE DOT (・)
является символом двойной ширины. Если ты хочешь используйте центральную точку Katakana (японская), подумайте об использовании HALFWIDTH KATAKANA MIDDLE DOT вместо этого. - переключается на обычную пулю, и она отлично работает.
Если вы видите twitter-text
, они сделали решение для KATAKANA MIDDLE DOT (・)
. См. В github repo
Ссылка ресурса
Проблема Katakana Middle Dot решена в Twitter-тексте
Но разработчик attom chrissimpkins заявил, что ниже
Я могу подтвердить, что у нас нет глифа средней точки Катакана (U + 30FB) в обычном шрифте Hack. Существует средняя точка (U + 00B7), которая будет что вы здесь. Я могу подтвердить, что Символ U + 00B7 имеет тот же фиксированный интервал ширины, что и остальная часть регулярное множество (и все остальные варианты).
Ссылка ресурса: https://github.com/atom/atom/issues/9115
Во-первых, я хочу поделиться с вами, что точка или период (.) символ ASCII. Так что точка (.) Не проблема. Символьная кодировка и Настройка сервера может быть проблемой.
URL-адреса можно отправлять только через Интернет, используя набор символов ASCII. Если URL-адрес содержит символы вне набора ASCII, URL-адрес должен быть преобразован.
URL-адрес SMB будет выглядеть следующим образом:
smb://[[[domain;]username[:password]@]server[:port]/[[share/[dir/]file]]][?param=value[param2=value2[...]]]
jCIFS также может обращаться к серверам и рабочим группам.
Важно: все URL-адреса SMB, которые представляют рабочие группы, серверы, общие или для каталогов требуется конечная косая черта '/'.
При использовании класса java.net.URL
с 'smb://'
URL-адресами необходимо сначала вызвать метод static jcifs.Config.registerSmbURLHandler();
. Это необходимо для регистрации обработчика протокола SMB.
Компонент userinfo URL-адреса SMB (domain; user: pass) должен быть URL-адресом закодирован, если он содержит зарезервированные символы. Согласно RFC 2396 эти символы не являются символами US-ASCII и большинством метасимволов однако jCIFS будет работать правильно с чем угодно, кроме "@", который используется для исключения компонента userinfo с сервера, а "%" - URL-адрес escape-символа.
Проверка и настройка символов
Затем вы должны знать, какую кодировку вы используете. Используя следующий код, вы можете получить:
System.out.println(Charset.defaultCharset());
или вы можете дать команду
$ testparm -v | grep dos
показывает, что стандартная OEM-кодировка Samba
CIFS использует либо
UTF-16LE
, либо кодовую страницу по умолчанию. По умолчанию кодовая страница, используемая JCIFS, - Cp850 или US_ASCII.
В jCIFS вы можете установить UTF-8 и проверить:
System.setProperty("jcifs.encoding", "UTF8");
Затем для japanese locale вы можете попробовать
System.setProperty("jcifs.encoding", "Shift_JIS");
обмениваться именами, паролями, и в некоторых случаях имена файлов и каталогов, которые содержат не ASCII символы могут не обрабатываться должным образом. По умолчанию это свойство Cp860, которое является MS-DOS Latin1.
Примечание. Преобразователь символов Cp860 находится в jre/lib/charsets.jar который AFAIK поддерживается только интернационализированной версией Sun JRE. Если Cp860 недоступен, произойдет исключение. Избегать это исключение, вы можете установить jcifs.encoding в ASCII, но обмениваться именами и пароли с не-ASCII-символами обрабатываются неправильно. Чтобы определить, правильно ли обрабатывается jCIFS, эти символы создают который содержит символы, отличные от ASCII (например, Grüße), а затем попытайтесь список, который совместно используется с программой ListFiles.java.
Настройка свойств клиента с японским
Для японского языка вы можете попробовать установить jcifs.encoding = Shift_JIS
В следующих таблицах показаны кодировки Japanese
, поддерживаемые J2SE 5.0. Канонические имена, используемые новыми API java.nio, во многих случаях не совпадают с теми, которые используются в API java.io и java.lang.
----------------------------------------------------------------------------------------------
|Canonical Name for | Canonical Name for java.io | Description |
| java.nio API | and java.lang API | |
----------------------------------------------------------------------------------------------
| EUC-JP | EUC_JP | JISX 0201, 0208 and 0212, EUC encoding |
| | | Japanese |
----------------------------------------------------------------------------------------------
| ISO-2022-JP | ISO2022JP | JIS X 0201, 0208, in ISO 2022 form, |
| | | Japanese |
----------------------------------------------------------------------------------------------
| Shift_JIS | SJIS | Shift-JIS, Japanese |
----------------------------------------------------------------------------------------------
| windows-31j | MS932 | Windows Japanese |
----------------------------------------------------------------------------------------------
| x-euc-jp-linux | EUC_JP_LINUX | JISX 0201, 0208, EUC encoding Japanese |
----------------------------------------------------------------------------------------------
| x-eucJP-Open | EUC_JP_Solaris | JISX 0201, 0208, 0212, EUC encoding |
| | | Japanese |
----------------------------------------------------------------------------------------------
| x-IBM33722 | Cp33722 | IBM-eucJP - Japanese (superset of 5050) |
----------------------------------------------------------------------------------------------
| x-IBM930 | Cp930 | Japanese Katakana-Kanji mixed with 4370 |
| | | UDC, superset of 5026 |
----------------------------------------------------------------------------------------------
| x-IBM939 | Cp939 | Japanese Latin Kanji mixed with 4370 |
| | | UDC, superset of 5035 |
----------------------------------------------------------------------------------------------
| x-IBM942 | Cp942 | IBM OS/2 Japanese, superset of Cp932 |
----------------------------------------------------------------------------------------------
| x-IBM943 | Cp943 | IBM OS/2 Japanese, superset of Cp932 |
| | | and Shift-JIS |
----------------------------------------------------------------------------------------------
Я использовал общий пример кода для JCIFS. Вы можете попробовать
- Копирование файлов по сетевой общей папке с помощью Java
- Копирование ресурсов в и из сети Windows с помощью Java
- Учебник по Java - Использование JCIFS для копирования файлов на общий сетевой диск используя имя пользователя и пароль
Вот пример извлечения файла:
import jcifs.smb.*;
jcifs.Config.setProperty( "jcifs.netbios.wins", "192.168.1.220" );
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("domain", "username", "password");
SmbFileInputStream in = new SmbFileInputStream("smb://host/c/My Documents/人事部/要員・コスト管理課/somefile.txt", auth);
byte[] b = new byte[8192];
int n;
while(( n = in.read( b )) > 0 ) {
System.out.write( b, 0, n );
}
Вы также можете читать/писать, удалять, создавать каталоги, переименовывать, содержимое списка каталогов, перечислить рабочие группы /ntdomains и серверы в сети, перечислить доли сервера, открыть именованные каналы, проверить подлинность веб-клиентов..etc.
Классы SmbFile, SmbFileInputStream и SmbFileOutputStream аналогично классам File, FileInputStream и FileOutputStream
Используя FileInputStream и FileOutputStream, код будет выглядеть следующим образом:
SmbFile[] files = getSMBListOfFiles(sb, logger, domain, userName, password, sourcePath, sourcePattern);
if (files == null)
return false;
output(sb, logger, " Source file count: " + files.length);
String destFilename;
FileOutputStream fileOutputStream;
InputStream fileInputStream;
byte[] buf;
int len;
for (SmbFile smbFile: files) {
destFilename = destinationPath + smbFile.getName();
output(sb, logger, " copying " + smbFile.getName());
try {
fileOutputStream = new FileOutputStream(destFilename);
fileInputStream = smbFile.getInputStream();
buf = new byte[16 * 1024 * 1024];
while ((len = fileInputStream.read(buf)) > 0) {
fileOutputStream.write(buf, 0, len);
}
fileInputStream.close();
fileOutputStream.close();
} catch (SmbException e) {
OutputHandler.output(sb, logger, "Exception during copyNetworkFilesToLocal stream to output, SMP issue: " + e.getMessage(), e);
e.printStackTrace();
return false;
} catch (FileNotFoundException e) {
OutputHandler.output(sb, logger, "Exception during copyNetworkFilesToLocal stream to output, file not found: " + e.getMessage(), e);
e.printStackTrace();
return false;
} catch (IOException e) {
OutputHandler.output(sb, logger, "Exception during copyNetworkFilesToLocal stream to output, IO problem: " + e.getMessage(), e);
e.printStackTrace();
return false;
} finally {
OutputHandler.output(sb, logger, "Exception during copyNetworkFilesToLocal stream to output, IO problem: " + e.getMessage(), e);
e.printStackTrace();
return false;
}
}
Кредит отправляется @человеку по имени haney
Ссылка ресурса: Как скопировать файл из общего ресурса smb на локальный диск с помощью jcifs в Java?
предосторожность-1:
Для получения дополнительных предостережений для пользователей HTTPS и Tomcat
В большинстве случаев URL-адреса, работающие через HTTP, работают нормально, но не при использовании HTTPS (т.е. через SSL). Обычно это приводит к тому, что символы Unicode (не ASCII) в URL-адресе HTTPS отображаются неверно в URL-адресе, а обслуживаемая страница содержит многочисленные ошибки
Это происходит, когда флаг useBodyEncodingForURI="true"
не определен в определении соединения HTTPS в conf/server.xml
сервера приложений Apache Tomcat с JIRA. Этот флаг устанавливается как таковой по умолчанию в 'рекомендуется' дистрибутивные установки JIRA.
Однако в настройках JIRA WAR это может быть не так. Следовательно, убедитесь, что флаг useBodyEncodingForURI="true"
включен в следующий элемент файла conf/server.xml
вашей установки Apache Tomcat под управлением JIRA:
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" useBodyEncodingForURI="true" />
После указания useBodyEncodingForURI="true"
во всех определениях соединителей (i.e. both the HTTP and the HTTPS connectors)
, как описано в разделе "Модификация Tomcat server.xml" Установка JIRA на Документация Tomcat 6.0 или 7.0
Ссылка на ресурс:
Как получить символы Unicode 'не-ASCII' в URL-адресе HTTPS для корректного отображения