На одном из наших серверов ColdFusion 10 Enterprise/CentOS 6.5 umlauts в именах файлов сохраняются как ?
.Umlauts в именах файлов усекаются (отображаются как вопросительные знаки)
Например:
<CFPROCESSINGDIRECTIVE pageencoding="UTF-8">
<CFSET VARIABLES.umlauts = "ümläüté" />
<CFSET VARIABLES.filename = createUUID() & "-" & VARIABLES.umlauts & ".txt" />
<CFFILE action="write" output="#VARIABLES.umlauts#" file="#expandpath("./" & VARIABLES.filename)#" />
<CFOUTPUT>#VARIABLES.filename#</CFOUTPUT> <!--- outputs something like: A9C9BC8C-983A-5EA6-A4ED411BA0E63C72-ümläüté.txt --->
записывает файл с именем A8B49720-020A-2500-605F4CC73129D07C-?ml??t?.txt
на диск. Содержимое файла похоже на ожидаемый «ümläüté». Ручное создание файлов с umlauts в имени файла не является проблемой (например, touch äöüß.txt
работает, как и ожидалось).
Подробнее о сервере:
Java Версия: 1.6.0_29
Tomcat Версия: 7.0.23.0
Java Кодировка файла: UTF8
$ cat /etc/sysconfig/i18n
LANG="en_US.UTF-8"
$ locale
LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=
Любые идеи, что может привести такое поведение?
ли имя файла * действительно * жестко закодированы в исходном коде, как это, или это просто пример? Если он находится в файле, вам понадобится ' 'в верхней части файла. –
Это просто пример кода.' 'does не устраняйте проблему. UMLauts по-прежнему '?'. –
Seybsen
Нет, директиву обработки применимо только в том случае, если оно указано в коде. Что я сказал. Если вы выдаете значения на экране, они хорошо сформированы? –