I have a WEB System and have been asked to put emoticons for sending e-mail.

I had some problems with the database encoding that is Oracle and the NLS_CHARACTERSET was set to WE8MSWIN1252 . In order to not change the structure of the database, I have made a solution that saves the emoticons in a field of type BLOB , that is:

// pego esse valor e salvo no BD na coluna Tipo BLOB
String em = emoji.getBytes("UTF-8");

To redeem the value of emoji as String I do:

// BLOB formatado para string
String em = new String(getEmoji, "UTF-8"); 

If I make a System.out.printl(em) emoji usually appears on my console, but when I send this String to a value of <h:inputText/> a black diamond with ? appears.

I've been trying to resolve for some time, including changing the JBOSS settings for UTF-8 encoding, and the xhtml files are saved as UTF-8. Could someone point me in some direction towards the solution?

Update The HTML Header is as follows:

<f:view contentType="text/html; charset=UTF-8"

             <meta http-equiv="X-UA-Compatible" content="IE=8"/>
             <meta name="author" content="#{applicationService.getPropertyValue('app.fullname')}"/>
             <meta http-equiv="Content-Language" content="pt-BR"/>
             <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
            <meta http-equiv="Cache-Control" content="public, must-revalidate"/>


As suggested by Gustavo Fragoso I saved the emoji string # x1F354, by passing the value to the inputText the string was converted to

Update: As suggested by Gustavo Fragoso could be a problem with my browser more is not; I am using a library called jQuery-emoji-picker and my front-end works perfectly, if I click on some emoji it will normally go into the input, the problem is when I do the opposite ie if the emoji string comes from the bank or if I manually paste emoji into the value of inputText when rendering html the emoji is converted to ; I was almost certain that some configuration in JBOSS was converting any request and response to another encoding other than UTF-8; so I made a filter that forced HTTP requests into UTF-8 encoding and looked like this:

package br.com.dt.filter;

import static org.jboss.seam.ScopeType.APPLICATION;

import static org.jboss.seam.ScopeType.APPLICATION;

import java.io.IOException;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.intercept.BypassInterceptors;
import org.jboss.seam.annotations.web.Filter;
import org.jboss.seam.web.AbstractFilter;

@Install(precedence = Install.BUILT_IN)
public class EncodingFilter  extends AbstractFilter{
    /** Preform the filtering. */
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {  
           response.setContentType("text/html; charset=UTF-8");  
           chain.doFilter(request, response);  

more unsuccessful, so I configured JBOSS in standalone.xml by placing:

        property name="file.encoding" value="utf-8"/
        property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/
        property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/

But also without success so far.


In Web Resources - Configuration there are several configuration files of faces-config.xml and one of them is called jsf-facelets.jar and see how it is configured:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE faces-config PUBLIC
 "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"


Is this ISO-8859-1 setting the reason for this problem?

asked by anonymous 05.11.2018 / 19:11

0 answers