Приложение 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 шт):

Автор решения: Sanzhar Sarsekov

Символ ? является признаком того, что 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


→ Ссылка