Приложение Java (JDownloader) не работает с кириллическими именами файлов
В Ubuntu 22.04 установил в Snap JDownloader, в самом JD язык русский, отображается нормально. Но кирилличесих имён файлов не видит. При попытке записать файл вместо кириллицы в имени знаки "?". Другие приложения из Snap таких проблем не имеют. Про Java практически ничего не знаю.
$ java -XshowSettings
VM settings:
Max. Heap Size (Estimated): 3.89G
Using VM: OpenJDK 64-Bit Server VM
Property settings:
file.encoding = UTF-8
file.separator = /
java.class.path =
java.class.version = 63.0
java.home = /usr/lib/jvm/java-19-openjdk-amd64
java.io.tmpdir = /tmp
java.library.path = /usr/java/packages/lib
/usr/lib/x86_64-linux-gnu/jni
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
/usr/lib/jni
/lib
/usr/lib
java.runtime.name = OpenJDK Runtime Environment
java.runtime.version = 19.0.1+10-Ubuntu-1ubuntu122.04
java.specification.name = Java Platform API Specification
java.specification.vendor = Oracle Corporation
java.specification.version = 19
java.vendor = Private Build
java.vendor.url = Unknown
java.vendor.url.bug = Unknown
java.version = 19.0.1
java.version.date = 2022-10-18
java.vm.compressedOopsMode = Zero based
java.vm.info = mixed mode, sharing
java.vm.name = OpenJDK 64-Bit Server VM
java.vm.specification.name = Java Virtual Machine Specification
java.vm.specification.vendor = Oracle Corporation
java.vm.specification.version = 19
java.vm.vendor = Private Build
java.vm.version = 19.0.1+10-Ubuntu-1ubuntu122.04
jdk.debug = release
line.separator = \n
native.encoding = UTF-8
os.arch = amd64
os.name = Linux
os.version = 5.15.0-56-generic
path.separator = :
stderr.encoding = UTF-8
stdout.encoding = UTF-8
sun.arch.data.model = 64
sun.boot.library.path = /usr/lib/jvm/java-19-openjdk-amd64/lib
sun.cpu.endian = little
sun.io.unicode.encoding = UnicodeLittle
sun.java.launcher = SUN_STANDARD
sun.jnu.encoding = UTF-8
sun.management.compiler = HotSpot 64-Bit Tiered Compilers
user.country = RU
user.dir = /home/deko
user.home = /home/deko
user.language = ru
user.name = deko
Locale settings:
default locale = русский (Россия)
default display locale = русский (Россия)
default format locale = русский (Россия)
available locales = , af, af_NA, af_ZA, af_ZA_#Latn, agq, agq_CM, agq_CM_#Latn,
ak, ak_GH, ak_GH_#Latn, am, am_ET, am_ET_#Ethi, ar, ar_001,
ar_AE, ar_BH, ar_DJ, ar_DZ, ar_EG, ar_EG_#Arab, ar_EH, ar_ER,
ar_IL, ar_IQ, ar_JO, ar_KM, ar_KW, ar_LB, ar_LY, ar_MA,
ar_MR, ar_OM, ar_PS, ar_QA, ar_SA, ar_SD, ar_SO, ar_SS,
ar_SY, ar_TD, ar_TN, ar_YE, as, as_IN, as_IN_#Beng, asa,
asa_TZ, asa_TZ_#Latn, ast, ast_ES, ast_ES_#Latn, az, az_AZ, az_AZ_#Cyrl,
az_AZ_#Latn, az__#Cyrl, az__#Latn, bas, bas_CM, bas_CM_#Latn, be, be_BY,
be_BY_#Cyrl, be__TARASK, bem, bem_ZM, bem_ZM_#Latn, bez, bez_TZ, bez_TZ_#Latn,
bg, bg_BG, bg_BG_#Cyrl, bm, bm_ML, bm_ML_#Latn, bn, bn_BD,
bn_BD_#Beng, bn_IN, bo, bo_CN, bo_CN_#Tibt, bo_IN, br, br_FR,
br_FR_#Latn, brx, brx_IN, brx_IN_#Deva, bs, bs_BA, bs_BA_#Cyrl, bs_BA_#Latn,
bs__#Cyrl, bs__#Latn, ca, ca_AD, ca_ES, ca_ES_#Latn, ca_ES_VALENCIA, ca_FR,
ca_IT, ccp, ccp_BD, ccp_BD_#Cakm, ccp_IN, ce, ce_RU, ce_RU_#Cyrl,
ceb, ceb_PH, ceb_PH_#Latn, cgg, cgg_UG, cgg_UG_#Latn, chr, chr_US,
chr_US_#Cher, ckb, ckb_IQ, ckb_IQ_#Arab, ckb_IR, cs, cs_CZ, cs_CZ_#Latn,
cy, cy_GB, cy_GB_#Latn, da, da_DK, da_DK_#Latn, da_GL, dav,
dav_KE, dav_KE_#Latn, de, de_AT, de_BE, de_CH, de_DE, de_DE_#Latn,
de_IT, de_LI, de_LU, dje, dje_NE, dje_NE_#Latn, doi, doi_IN,
doi_IN_#Deva, dsb, dsb_DE, dsb_DE_#Latn, dua, dua_CM, dua_CM_#Latn, dyo,
dyo_SN, dyo_SN_#Latn, dz, dz_BT, dz_BT_#Tibt, ebu, ebu_KE, ebu_KE_#Latn,
ee, ee_GH, ee_GH_#Latn, ee_TG, el, el_CY, el_GR, el_GR_#Grek,
en, en_001, en_150, en_AE, en_AG, en_AI, en_AS, en_AT,
en_AU, en_BB, en_BE, en_BI, en_BM, en_BS, en_BW, en_BZ,
en_CA, en_CC, en_CH, en_CK, en_CM, en_CX, en_CY, en_DE,
en_DG, en_DK, en_DM, en_ER, en_FI, en_FJ, en_FK, en_FM,
en_GB, en_GD, en_GG, en_GH, en_GI, en_GM, en_GU, en_GY,
en_HK, en_IE, en_IL, en_IM, en_IN, en_IO, en_JE, en_JM,
en_KE, en_KI, en_KN, en_KY, en_LC, en_LR, en_LS, en_MG,
en_MH, en_MO, en_MP, en_MS, en_MT, en_MU, en_MV, en_MW,
en_MY, en_NA, en_NF, en_NG, en_NL, en_NR, en_NU, en_NZ,
en_PG, en_PH, en_PK, en_PN, en_PR, en_PW, en_RW, en_SB,
en_SC, en_SD, en_SE, en_SG, en_SH, en_SI, en_SL, en_SS,
en_SX, en_SZ, en_TC, en_TK, en_TO, en_TT, en_TV, en_TZ,
en_UG, en_UM, en_US, en_US_#Latn, en_US_POSIX, en_VC, en_VG, en_VI,
en_VU, en_WS, en_ZA, en_ZM, en_ZW, eo, eo_001, eo_001_#Latn,
es, es_419, es_AR, es_BO, es_BR, es_BZ, es_CL, es_CO,
es_CR, es_CU, es_DO, es_EA, es_EC, es_ES, es_ES_#Latn, es_GQ,
es_GT, es_HN, es_IC, es_MX, es_NI, es_PA, es_PE, es_PH,
es_PR, es_PY, es_SV, es_US, es_UY, es_VE, et, et_EE,
et_EE_#Latn, eu, eu_ES, eu_ES_#Latn, ewo, ewo_CM, ewo_CM_#Latn, fa,
fa_AF, fa_IR, fa_IR_#Arab, ff, ff_BF_#Adlm, ff_BF_#Latn, ff_CM_#Adlm, ff_CM_#Latn,
ff_GH_#Adlm, ff_GH_#Latn, ff_GM_#Adlm, ff_GM_#Latn, ff_GN, ff_GN_#Adlm, ff_GN_#Latn, ff_GW_#Adlm,
ff_GW_#Latn, ff_LR_#Adlm, ff_LR_#Latn, ff_MR_#Adlm, ff_MR_#Latn, ff_NE_#Adlm, ff_NE_#Latn, ff_NG_#Adlm,
ff_NG_#Latn, ff_SL_#Adlm, ff_SL_#Latn, ff_SN, ff_SN_#Adlm, ff_SN_#Latn, ff__#Adlm, ff__#Latn,
fi, fi_FI, fi_FI_#Latn, fil, fil_PH, fil_PH_#Latn, fo, fo_DK,
fo_FO, fo_FO_#Latn, fr, fr_BE, fr_BF, fr_BI, fr_BJ, fr_BL,
fr_CA, fr_CD, fr_CF, fr_CG, fr_CH, fr_CI, fr_CM, fr_DJ,
fr_DZ, fr_FR, fr_FR_#Latn, fr_GA, fr_GF, fr_GN, fr_GP, fr_GQ,
fr_HT, fr_KM, fr_LU, fr_MA, fr_MC, fr_MF, fr_MG, fr_ML,
fr_MQ, fr_MR, fr_MU, fr_NC, fr_NE, fr_PF, fr_PM, fr_RE,
fr_RW, fr_SC, fr_SN, fr_SY, fr_TD, fr_TG, fr_TN, fr_VU,
fr_WF, fr_YT, fur, fur_IT, fur_IT_#Latn, fy, fy_NL, fy_NL_#Latn,
ga, ga_GB, ga_IE, ga_IE_#Latn, gd, gd_GB, gd_GB_#Latn, gl,
gl_ES, gl_ES_#Latn, gsw, gsw_CH, gsw_CH_#Latn, gsw_FR, gsw_LI, gu,
gu_IN, gu_IN_#Gujr, guz, guz_KE, guz_KE_#Latn, gv, gv_IM, gv_IM_#Latn,
ha, ha_GH, ha_NE, ha_NG, ha_NG_#Latn, haw, haw_US, haw_US_#Latn,
he, he_IL, he_IL_#Hebr, hi, hi_IN, hi_IN_#Deva, hi_IN_#Latn, hi__#Latn,
hr, hr_BA, hr_HR, hr_HR_#Latn, hsb, hsb_DE, hsb_DE_#Latn, hu,
hu_HU, hu_HU_#Latn, hy, hy_AM, hy_AM_#Armn, ia, ia_001, ia_001_#Latn,
id, id_ID, id_ID_#Latn, ig, ig_NG, ig_NG_#Latn, ii, ii_CN,
ii_CN_#Yiii, is, is_IS, is_IS_#Latn, it, it_CH, it_IT, it_IT_#Latn,
it_SM, it_VA, ja, ja_JP, ja_JP_#Jpan, ja_JP_JP_#u-ca-japanese, jgo, jgo_CM,
jgo_CM_#Latn, jmc, jmc_TZ, jmc_TZ_#Latn, jv, jv_ID, jv_ID_#Latn, ka,
ka_GE, ka_GE_#Geor, kab, kab_DZ, kab_DZ_#Latn, kam, kam_KE, kam_KE_#Latn,
kde, kde_TZ, kde_TZ_#Latn, kea, kea_CV, kea_CV_#Latn, kgp, kgp_BR,
kgp_BR_#Latn, khq, khq_ML, khq_ML_#Latn, ki, ki_KE, ki_KE_#Latn, kk,
kk_KZ, kk_KZ_#Cyrl, kkj, kkj_CM, kkj_CM_#Latn, kl, kl_GL, kl_GL_#Latn,
kln, kln_KE, kln_KE_#Latn, km, km_KH, km_KH_#Khmr, kn, kn_IN,
kn_IN_#Knda, ko, ko_KP, ko_KR, ko_KR_#Kore, kok, kok_IN, kok_IN_#Deva,
ks, ks_IN, ks_IN_#Arab, ks_IN_#Deva, ks__#Arab, ks__#Deva, ksb, ksb_TZ,
ksb_TZ_#Latn, ksf, ksf_CM, ksf_CM_#Latn, ksh, ksh_DE, ksh_DE_#Latn, ku,
ku_TR, ku_TR_#Latn, kw, kw_GB, kw_GB_#Latn, ky, ky_KG, ky_KG_#Cyrl,
lag, lag_TZ, lag_TZ_#Latn, lb, lb_LU, lb_LU_#Latn, lg, lg_UG,
lg_UG_#Latn, lkt, lkt_US, lkt_US_#Latn, ln, ln_AO, ln_CD, ln_CD_#Latn,
ln_CF, ln_CG, lo, lo_LA, lo_LA_#Laoo, lrc, lrc_IQ, lrc_IR,
lrc_IR_#Arab, lt, lt_LT, lt_LT_#Latn, lu, lu_CD, lu_CD_#Latn, luo,
luo_KE, luo_KE_#Latn, luy, luy_KE, luy_KE_#Latn, lv, lv_LV, lv_LV_#Latn,
mai, mai_IN, mai_IN_#Deva, mas, mas_KE, mas_KE_#Latn, mas_TZ, mer,
mer_KE, mer_KE_#Latn, mfe, mfe_MU, mfe_MU_#Latn, mg, mg_MG, mg_MG_#Latn,
mgh, mgh_MZ, mgh_MZ_#Latn, mgo, mgo_CM, mgo_CM_#Latn, mi, mi_NZ,
mi_NZ_#Latn, mk, mk_MK, mk_MK_#Cyrl, ml, ml_IN, ml_IN_#Mlym, mn,
mn_MN, mn_MN_#Cyrl, mni, mni_IN, mni_IN_#Beng, mni__#Beng, mr, mr_IN,
mr_IN_#Deva, ms, ms_BN, ms_ID, ms_MY, ms_MY_#Latn, ms_SG, mt,
mt_MT, mt_MT_#Latn, mua, mua_CM, mua_CM_#Latn, my, my_MM, my_MM_#Mymr,
mzn, mzn_IR, mzn_IR_#Arab, naq, naq_NA, naq_NA_#Latn, nb, nb_NO,
nb_NO_#Latn, nb_SJ, nd, nd_ZW, nd_ZW_#Latn, nds, nds_DE, nds_DE_#Latn,
nds_NL, ne, ne_IN, ne_NP, ne_NP_#Deva, nl, nl_AW, nl_BE,
nl_BQ, nl_CW, nl_NL, nl_NL_#Latn, nl_SR, nl_SX, nmg, nmg_CM,
nmg_CM_#Latn, nn, nn_NO, nn_NO_#Latn, nnh, nnh_CM, nnh_CM_#Latn, no,
no_NO, no_NO_#Latn, no_NO_NY, nus, nus_SS, nus_SS_#Latn, nyn, nyn_UG,
nyn_UG_#Latn, om, om_ET, om_ET_#Latn, om_KE, or, or_IN, or_IN_#Orya,
os, os_GE, os_GE_#Cyrl, os_RU, pa, pa_IN, pa_IN_#Guru, pa_PK,
pa_PK_#Arab, pa__#Arab, pa__#Guru, pcm, pcm_NG, pcm_NG_#Latn, pl, pl_PL,
pl_PL_#Latn, ps, ps_AF, ps_AF_#Arab, ps_PK, pt, pt_AO, pt_BR,
pt_BR_#Latn, pt_CH, pt_CV, pt_GQ, pt_GW, pt_LU, pt_MO, pt_MZ,
pt_PT, pt_ST, pt_TL, qu, qu_BO, qu_EC, qu_PE, qu_PE_#Latn,
rm, rm_CH, rm_CH_#Latn, rn, rn_BI, rn_BI_#Latn, ro, ro_MD,
ro_RO, ro_RO_#Latn, rof, rof_TZ, rof_TZ_#Latn, ru, ru_BY, ru_KG,
ru_KZ, ru_MD, ru_RU, ru_RU_#Cyrl, ru_UA, rw, rw_RW, rw_RW_#Latn,
rwk, rwk_TZ, rwk_TZ_#Latn, sa, sa_IN, sa_IN_#Deva, sah, sah_RU,
sah_RU_#Cyrl, saq, saq_KE, saq_KE_#Latn, sat, sat_IN, sat_IN_#Olck, sat__#Olck,
sbp, sbp_TZ, sbp_TZ_#Latn, sc, sc_IT, sc_IT_#Latn, sd, sd_IN,
sd_IN_#Deva, sd_PK, sd_PK_#Arab, sd__#Arab, sd__#Deva, se, se_FI, se_NO,
se_NO_#Latn, se_SE, seh, seh_MZ, seh_MZ_#Latn, ses, ses_ML, ses_ML_#Latn,
sg, sg_CF, sg_CF_#Latn, shi, shi_MA, shi_MA_#Latn, shi_MA_#Tfng, shi__#Latn,
shi__#Tfng, si, si_LK, si_LK_#Sinh, sk, sk_SK, sk_SK_#Latn, sl,
sl_SI, sl_SI_#Latn, smn, smn_FI, smn_FI_#Latn, sn, sn_ZW, sn_ZW_#Latn,
so, so_DJ, so_ET, so_KE, so_SO, so_SO_#Latn, sq, sq_AL,
sq_AL_#Latn, sq_MK, sq_XK, sr, sr_BA, sr_BA_#Cyrl, sr_BA_#Latn, sr_CS,
sr_ME, sr_ME_#Cyrl, sr_ME_#Latn, sr_RS, sr_RS_#Cyrl, sr_RS_#Latn, sr_XK_#Cyrl, sr_XK_#Latn,
sr__#Cyrl, sr__#Latn, su, su_ID, su_ID_#Latn, su__#Latn, sv, sv_AX,
sv_FI, sv_SE, sv_SE_#Latn, sw, sw_CD, sw_KE, sw_TZ, sw_TZ_#Latn,
sw_UG, ta, ta_IN, ta_IN_#Taml, ta_LK, ta_MY, ta_SG, te,
te_IN, te_IN_#Telu, teo, teo_KE, teo_UG, teo_UG_#Latn, tg, tg_TJ,
tg_TJ_#Cyrl, th, th_TH, th_TH_#Thai, th_TH_TH_#u-nu-thai, ti, ti_ER, ti_ET,
ti_ET_#Ethi, tk, tk_TM, tk_TM_#Latn, to, to_TO, to_TO_#Latn, tr,
tr_CY, tr_TR, tr_TR_#Latn, tt, tt_RU, tt_RU_#Cyrl, twq, twq_NE,
twq_NE_#Latn, tzm, tzm_MA, tzm_MA_#Latn, ug, ug_CN, ug_CN_#Arab, uk,
uk_UA, uk_UA_#Cyrl, ur, ur_IN, ur_PK, ur_PK_#Arab, uz, uz_AF,
uz_AF_#Arab, uz_UZ, uz_UZ_#Cyrl, uz_UZ_#Latn, uz__#Arab, uz__#Cyrl, uz__#Latn, vai,
vai_LR, vai_LR_#Latn, vai_LR_#Vaii, vai__#Latn, vai__#Vaii, vi, vi_VN, vi_VN_#Latn,
vun, vun_TZ, vun_TZ_#Latn, wae, wae_CH, wae_CH_#Latn, wo, wo_SN,
wo_SN_#Latn, xh, xh_ZA, xh_ZA_#Latn, xog, xog_UG, xog_UG_#Latn, yav,
yav_CM, yav_CM_#Latn, yi, yi_001, yi_001_#Hebr, yo, yo_BJ, yo_NG,
yo_NG_#Latn, yrl, yrl_BR, yrl_BR_#Latn, yrl_CO, yrl_VE, yue, yue_CN,
yue_CN_#Hans, yue_HK, yue_HK_#Hant, yue__#Hans, yue__#Hant, zgh, zgh_MA, zgh_MA_#Tfng,
zh, zh_CN, zh_CN_#Hans, zh_HK, zh_HK_#Hans, zh_HK_#Hant, zh_MO, zh_MO_#Hans,
zh_MO_#Hant, zh_SG, zh_SG_#Hans, zh_TW, zh_TW_#Hant, zh__#Hans, zh__#Hant, zu,
zu_ZA, zu_ZA_#Latn
Operating System Metrics:
Provider: cgroupv2
Effective CPU Count: 6
CPU Period: -1
CPU Quota: -1
CPU Shares: -1
List of Processors: N/A
List of Effective Processors: N/A
List of Memory Nodes: N/A
List of Available Memory Nodes: N/A
Memory Limit: Unlimited
Memory Soft Limit: 0.00K
Memory & Swap Limit: Unlimited
Maximum Processes Limit: 19018
Может ли быть причина в Java, или это проблема приложения? Что посоветуете делать?
Ответы (1 шт):
Символ ? является признаком того, что LOCALE указан неверно или не соответствует utf-8.
Для решения пробемы нужно заменить локализацию
export LC_CTYPE="en_US.UTF-8"
export LANG="en_US.UTF-8"
export LC_COLLATE="C"
java -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8 -jar JDownloader.jar
В JDownloader это просто рендеринг шрифта, но как только JDownloader/Java должен взаимодействовать с ОС/файловой системой, так он для этого использует LOCALE для преобразования текста в байтовое представление в файловой системе.
Так же вот полезная информация для понимания работы локализации в ubuntu help.ubuntu.com/community/Locale