In Mail question mark is coming in place of special characters

Avatar

Avatar

sunitac2231600

Avatar

sunitac2231600

sunitac2231600

01-11-2016

Hi All,

I have a simple abc.txt email template under /etc/notification/email .

**************************abc.txt****************************

<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>
<pre style="white-space:normal;">
    <table width="100%" border="0" cellpadding="0" cellspacing="0" align="center">
         <br/><br/>
          ${pages} 
    </table>
</pre>
</body>
</html>

Whenever off time property will be changed the mail will be triggered. For this code is written as below.

In onevent we are calling below

emailService.sendEmail(EMAIL_TEMPLATE_PATH,emailParamsThirty,groupEmail);

******************************EMAIL CODE*********************************

private Map<String, String> prepareEmailParams(ResourceResolver resourceResolver, String pagePath)  {                
                final Map<String, String> emailParams = new HashMap<String,String>();        
                String pagePath = resourceResolver.map(page.getPath()); 
                strBufferPages.append("<li><a href='").append(pagePath).append(".html").append("'>");
                strBufferPages.append("第65回日");  --------THIS ONE WHEN WE WILL GET IN MAIL IT IS COMING LIKE ?65??

                strBufferPages.append("</a></li>");
                strBufferPages.append("</ul> </td></tr>");                
                //LOGGER.info("pagesExists ========== +++++++++++++ ==== " + strBufferPages.toString());
                emailParams.put("pages", strBufferPages.toString());                
    }

But When I am getting mail , the UTF-8 is removed and it is coming like ?65??

Can anybody please help me on this.

Thanks in advance.

Replies

Avatar

Avatar

kautuk_sahni

Community Manager

Total Posts

5.8K

Likes

1.0K

Correct Reply

1.1K

Avatar

kautuk_sahni

Community Manager

Total Posts

5.8K

Likes

1.0K

Correct Reply

1.1K
kautuk_sahni
Community Manager

02-11-2016

Hi 

Pleas refer to this community article:-

Link:- http://adobeaemtips.blogspot.in/2015/11/utf-8-encoding-in-aem.html

// UTF- 8 Encoding in AEM

    AEM 6.1 : Go to Apache Sling Request Parameter Handling . Change the Default Parameter Encoding to "UTF-8"

    Encoding & Decoding while posting data to Sling Servlet :

    Decoding  in the Servlet.

    String id = java.net.URLDecoder.decode(request.getParameter("id"), "UTF-8");

    Encoding data before posting to a  Servlet

    String id= java.net.URLEncoder.encode("cust®", "UTF-8"); 

    Set charset encoding in a JSP :

    <%@ page contentType="text/html;charset=UTF-8" %> 
    <%@ taglib uri="/libs/CFC/resources/jstl/c.tld" prefix="c" %> 
    <form method="post"> 
    <input name="searchterm" value="<c:out value="${param.searchterm}" />" />
    <input type="submit" /> 

    </form>

 

Link:-http://help-forums.adobe.com/content/adobeforums/en/experience-manager-forum/adobe-experience-manage...

// Unicode escape sequences: \u followed by 4 hexadecimal digits (e.g.: \u0022 for ", \u0027 for ', \u003c for <, or \u003e for >

 In HTL (Formerly known as Sightly), 

 Use:-   ${ '{0} {1} {2} {3}' @ format=['\u003e','\u003C', '\u002F', '\u005C']}

 This will print :-        > < / \

 

Link:- https://helpx.adobe.com/experience-manager/using/post_chars.html

// Posting Special Characters to Adobe Experience Manager

 

I hope this would help you.

~kautuk

Avatar

Avatar

MrynalKumar

Avatar

MrynalKumar

MrynalKumar

27-04-2020

I also faced similar issue. Unicode character(special characters) passed as a request parameter getting converted to question mark(?).

issue-17-screen-1.jpg

Reason : Reason is the character encoding.

Solution :

# Solution 1
1. Configure 'Apache Sling Request Parameter Handling', Set the property 'Default Parameter Encoding'='iso-8859-1'
2. Take care of the character encoding (to UTF-8) through code
queryString = new String(request.getParameter(initialSearchConfig.getQueryStringParamName()).getBytes("iso-8859-1"), "UTF-8");

# Solution 2
1.Configure 'Apache Sling Request Parameter Handling', Set the property 'Default Parameter Encoding'='UTF-8'
2. Igonore the encoding through code
queryString = new String(request.getParameter(initialSearchConfig.getQueryStringParamName()));

Hope this help.