portabilis / i-educar

Lançando o maior software livre de educação do Brasil!
https://ieducar.org
GNU General Public License v2.0
598 stars 454 forks source link

Erro acentuação campo Observações dos Relatórios #833

Closed kesllan closed 1 year ago

kesllan commented 2 years ago

MENU:

DESCRIÇÃO:

Toda informação que possuem caracteres especiais/acentuação que é digitada nos campos de observações dos relatórios são apresentadas com erros, ou seja, os caracteres especiais são substituidos por "?". Imagens anexas.

OBSERVAÇÕES:

Já abri um tópico no Fórum e já verifiquei a códificação do Postgres, do Servidor e do PHP e tudo está correto. https://forum.ieducar.org/t/erro-de-acentuacao-de-palavras-no-relatorio-de-atestado-de-frequencia/1338/9

*Observei que as informações que são passadas do banco de dados para o relatório e as informações estáticas não apresetam os referidos erros, somente as informações do textField do JasperReports

AMBIENTE:

image

robertfsousa commented 1 year ago

Na minha instalação a acentuação ocorre normalmente.

2022-12-21_17-26

Como sugestão, poderia verificar se o sistema operacional tem a fonte DejaVu Sans Ela é a utilizado nos relatórios.

msoares94 commented 1 year ago

Na minha instalação a acentuação ocorre normalmente.

2022-12-21_17-26

Como sugestão, poderia verificar se o sistema operacional tem a fonte DejaVu Sans Ela é a utilizado nos relatórios.

Legal @robertfsousa, sua instalação de banco de dados está com qual charset? Poderia compartilhar o retorno do comando psql -U postgres -c "\l" executado no seu ambiente?

edersoares commented 1 year ago

@marcosoliveirasoares94 UTF-8

msoares94 commented 1 year ago

Legal @edersoares, mais notei que isso por sí só não é suficiente. Atualmente tenho as seguintes configurações e mesmo assim os meus relatórios são exibidos de forma quebrada.

image

image

Saída do comando: java -XshowSettings

VM settings:
    Max. Heap Size (Estimated): 237.81M
    Ergonomics Machine Class: client
    Using VM: OpenJDK 64-Bit Server VM

Property settings:
    awt.toolkit = sun.awt.X11.XToolkit
    file.encoding = UTF-8
    file.encoding.pkg = sun.io
    file.separator = /
    java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment
    java.awt.printerjob = sun.print.PSPrinterJob
    java.class.path = .
    java.class.version = 52.0
    java.endorsed.dirs = /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/endorsed
    java.ext.dirs = /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext
        /usr/java/packages/lib/ext
    java.home = /usr/lib/jvm/java-8-openjdk-amd64/jre
    java.io.tmpdir = /tmp
    java.library.path = /usr/java/packages/lib/amd64
        /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 = 1.8.0_352-8u352-ga-1~20.04-b08
    java.specification.maintenance.version = 4
    java.specification.name = Java Platform API Specification
    java.specification.vendor = Oracle Corporation
    java.specification.version = 1.8
    java.vendor = Private Build
    java.vendor.url = http://java.oracle.com/
    java.vendor.url.bug = http://bugreport.sun.com/bugreport/
    java.version = 1.8.0_352
    java.vm.info = mixed mode
    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 = 1.8
    java.vm.vendor = Private Build
    java.vm.version = 25.352-b08
    line.separator = \n 
    os.arch = amd64
    os.name = Linux
    os.version = 5.4.0-132-generic
    path.separator = :
    sun.arch.data.model = 64
    sun.boot.class.path = /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/resources.jar
        /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar
        /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/sunrsasign.jar
        /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jsse.jar
        /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jce.jar
        /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/charsets.jar
        /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jfr.jar
        /usr/lib/jvm/java-8-openjdk-amd64/jre/classes
    sun.boot.library.path = /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64
    sun.cpu.endian = little
    sun.cpu.isalist = 
    sun.io.unicode.encoding = UnicodeLittle
    sun.java.launcher = SUN_STANDARD
    sun.jnu.encoding = UTF-8
    sun.management.compiler = HotSpot 64-Bit Tiered Compilers
    sun.os.patch.level = unknown
    user.country = BR
    user.dir = /var/www/ieducar
    user.home = /root
    user.language = pt
    user.name = root
    user.timezone = 

Locale settings:
    default locale = português
    default display locale = português (Brasil)
    default format locale = português (Brasil)
    available locales = , ar, ar_AE, ar_BH, ar_DZ, ar_EG, ar_IQ, ar_JO, 
        ar_KW, ar_LB, ar_LY, ar_MA, ar_OM, ar_QA, ar_SA, ar_SD, 
        ar_SY, ar_TN, ar_YE, be, be_BY, bg, bg_BG, ca, 
        ca_ES, cs, cs_CZ, da, da_DK, de, de_AT, de_CH, 
        de_DE, de_GR, de_LU, el, el_CY, el_GR, en, en_AU, 
        en_CA, en_GB, en_IE, en_IN, en_MT, en_NZ, en_PH, en_SG, 
        en_US, en_ZA, es, es_AR, es_BO, es_CL, es_CO, es_CR, 
        es_CU, es_DO, es_EC, es_ES, es_GT, es_HN, es_MX, es_NI, 
        es_PA, es_PE, es_PR, es_PY, es_SV, es_US, es_UY, es_VE, 
        et, et_EE, fi, fi_FI, fr, fr_BE, fr_CA, fr_CH, 
        fr_FR, fr_LU, ga, ga_IE, hi, hi_IN, hr, hr_HR, 
        hu, hu_HU, in, in_ID, is, is_IS, it, it_CH, 
        it_IT, iw, iw_IL, ja, ja_JP, ja_JP_JP_#u-ca-japanese, ko, ko_KR, 
        lt, lt_LT, lv, lv_LV, mk, mk_MK, ms, ms_MY, 
        mt, mt_MT, nl, nl_BE, nl_NL, no, no_NO, no_NO_NY, 
        pl, pl_PL, pt, pt_BR, pt_PT, ro, ro_RO, ru, 
        ru_RU, sk, sk_SK, sl, sl_SI, sq, sq_AL, sr, 
        sr_BA, sr_BA_#Latn, sr_CS, sr_ME, sr_ME_#Latn, sr_RS, sr_RS_#Latn, sr__#Latn, 
        sv, sv_SE, th, th_TH, th_TH_TH_#u-nu-thai, tr, tr_TR, uk, 
        uk_UA, vi, vi_VN, zh, zh_CN, zh_HK, zh_SG, zh_TW

Existe algo que posso não estar vendo ou alguma configuração faltando?

edersoares commented 1 year ago

Segue:

Screen Shot 2022-12-23 at 11 11 36
VM settings:
    Max. Heap Size (Estimated): 2.00G
    Using VM: OpenJDK 64-Bit Server VM

Property settings:
    awt.toolkit = sun.lwawt.macosx.LWCToolkit
    file.encoding = UTF-8
    file.separator = /
    ftp.nonProxyHosts = local|*.local|169.254/16|*.169.254/16
    gopherProxySet = false
    http.nonProxyHosts = local|*.local|169.254/16|*.169.254/16
    java.awt.graphicsenv = sun.awt.CGraphicsEnvironment
    java.awt.printerjob = sun.lwawt.macosx.CPrinterJob
    java.class.path = 
    java.class.version = 55.0
    java.home = /usr/local/Cellar/openjdk@11/11.0.17/libexec/openjdk.jdk/Contents/Home
    java.io.tmpdir = /var/folders/00/jq7zk52n4p5521ys1rdmtg8m0000gn/T/
    java.library.path = /Users/edersoares/Library/Java/Extensions
        /Library/Java/Extensions
        /Network/Library/Java/Extensions
        /System/Library/Java/Extensions
        /usr/lib/java
        .
    java.runtime.name = OpenJDK Runtime Environment
    java.runtime.version = 11.0.17+0
    java.specification.name = Java Platform API Specification
    java.specification.vendor = Oracle Corporation
    java.specification.version = 11
    java.vendor = Homebrew
    java.vendor.url = https://github.com/Homebrew/homebrew-core/issues
    java.vendor.url.bug = https://github.com/Homebrew/homebrew-core/issues
    java.vendor.version = Homebrew
    java.version = 11.0.17
    java.version.date = 2022-10-18
    java.vm.compressedOopsMode = Zero based
    java.vm.info = mixed mode
    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 = 11
    java.vm.vendor = Homebrew
    java.vm.version = 11.0.17+0
    jdk.debug = release
    line.separator = \n 
    os.arch = x86_64
    os.name = Mac OS X
    os.version = 12.6
    path.separator = :
    socksNonProxyHosts = local|*.local|169.254/16|*.169.254/16
    sun.arch.data.model = 64
    sun.boot.library.path = /usr/local/Cellar/openjdk@11/11.0.17/libexec/openjdk.jdk/Contents/Home/lib
    sun.cpu.endian = little
    sun.cpu.isalist = 
    sun.io.unicode.encoding = UnicodeBig
    sun.java.launcher = SUN_STANDARD
    sun.jnu.encoding = UTF-8
    sun.management.compiler = HotSpot 64-Bit Tiered Compilers
    sun.os.patch.level = unknown
    user.country = BR
    user.dir = /Users/edersoares/GitHub/portabilis/i-diario-portabilis
    user.home = /Users/edersoares
    user.language = en
    user.name = edersoares
    user.timezone = 

Locale settings:
    default locale = English (Brazil)
    default display locale = English (Brazil)
    default format locale = English (Brazil)
msoares94 commented 1 year ago

Obrigado @edersoares, vou tentar replicar essa configurações e volto aqui para dar um retorno positivamente ou negativamente!

msoares94 commented 1 year ago

@edersoares, voltando aqui para deixar um retorno!

Fiz a alteração no banco de dados, porém ainda sem efeito na apresentação do caractere especial.

Documento emitido após a alteração do banco de dados: image

Evidência da alteração do banco de dados: image

Confesso que minhas opções se exauriram! Apostaria na versão/configuração da JVM utilizada pela portabilis e o que está documentado para a comunidade.

O documentado é java.vm.specification.version = 1.8 a informado no seu ambiente é java.vm.specification.version = 11

image

Ou no Locale settings, pois está diferente entre as nossas evidências.

@kesllan, poderia testar com a versão do java 11 e essa questão do locale settings e nos dar um retorno?

kesllan commented 1 year ago

@robertfsousa @edersoares Eu verifquei as seguintes configurações e todas estão corretas:

$this->report->addArg('observacao', urlencode($this->getRequest()->observacao));

O método urlencode() é usado para codificar o valor do parâmetro em formato URL, assim so caracteres especiais são passados sem erros.

edersoares commented 1 year ago

Boa @kesllan! Internamente nós usamos uma implementação customizada do JasperReports então não temos este erro.

A comunidade consegue atuar e abrir os PRs para fazerem estas correções?

kesllan commented 1 year ago

Boa @kesllan! Internamente nós usamos uma implementação customizada do JasperReports então não temos este erro.

A comunidade consegue atuar e abrir os PRs para fazerem estas correções?

Eu posso fazer isso. Vou ver se o @marcosoliveirasoares94 me ajuda.

msoares94 commented 1 year ago

@kesllan,

Me parece que foi corrigido na branch 2.7 atual do pacote de relatórios.

Testei com a branch 2.8 atual do i-Educar.

image

kesllan commented 1 year ago

Vou testar e se tiver tudo ok aqui. Já fecho a issue. Valeu

edersoares commented 1 year ago

Encerrando, qualquer necessidade pode reabrir a issue ;)