Well I was able to come up with a temporary work around, but it's such an 
ugly hack I'm almost embarrassed to share it!

I figured what I needed to do was force javascript to evaluate the String 
somehow. Here are the steps I took to make that happen:

1. Use javascript control codes (as text) in your content (EG: \u201C)

2. Create a JSONObject with the loaded content 

JSONObject json = new JSONObject();
json.put("content", new JSONString(response.getText()));


2. Serialize the object into a json String, and unescape the control codes

//note: StringUtil.unescapeJavaScript is a re-implementation of 
//      org.apache.commons.lang.StringEscapeUtils which uses a 
//      StringBuilder rather than a Writer. I can post if desired.
String data = "[" + StringUtil.unescapeJavaScript(json.toString()) + "]";


3. Evaluate the JSON string back into a JavascriptObject using a JSNI 
native method

panel1.getElement().setInnerHTML(evalContent(data).get(0).content());


private static native JsArray<ContentMemento> evalContent(String jsonStr) 
/*-{
return eval(jsonStr);
}-*/;


class ContentMemento extends JavaScriptObject
{
    protected ContentMemento()
    {

    }

    public final native String content() /*-{
return this.content;
    }-*/;
} 



Presto! I now have unicode characters in dynamic text content. However, I 
would still really really love it if anyone knows of a way I can evaluate 
the String data without having to go through JSON


Thanks again!

On Monday, November 12, 2012 1:41:23 PM UTC-8, drkstr1 wrote:
>
> Hello All,
>
> I am having an issue with Unicode characters being displayed in dynamic 
> text content.
>
> Please consider the examples UnicodeTest1 and UnicodeTest2, bellow. I can 
> get the desired behavior if I assign the content manually using the 
> javascript escape codes for the unicode character (see UnicodeTest1). 
> However, when I load the text with a RequestBuilder, I can't get any 
> unicode characters to display, regardless of how that content is formatted 
> (see UnicodeTest2).
>
> What is the correct way to display unicode characters in text that was 
> loaded from a RequestBuilder?
>
> Thank you for your time!
>
>
> public class UnicodeTest1 implements EntryPoint, IsWidget
> {
>     private static final String TEXT1 = "\u201CHello World!\u201D";
>
>     private static final String TEXT2 = "“Hello World!”";
>
>     public void onModuleLoad()
>     {
>         RootPanel.get().add(this);
>     }
>
>     @Override
>     public Widget asWidget()
>     {
>         VerticalPanel container = new VerticalPanel();
>
>         SimplePanel panel1 = new SimplePanel();
>         panel1.getElement().setInnerHTML(TEXT1);
>         container.add(panel1);
>
>         SimplePanel panel2 = new SimplePanel();
>         panel2.getElement().setInnerHTML(TEXT2);
>         container.add(panel2);
>
>         return container;
>     }
> }
>
>
> public class UnicodeTest2 implements EntryPoint, IsWidget
> {
>     public void onModuleLoad()
>     {
>         RootPanel.get().add(this);
>     }
>
>     @Override
>     public Widget asWidget()
>     {
>         VerticalPanel container = new VerticalPanel();
>
>         final SimplePanel panel1 = new SimplePanel();
>         container.add(panel1);
>
>         RequestBuilder rb = null;
>
>         // Contains: \u201CHello World!\u201D
>         rb = new RequestBuilder(RequestBuilder.GET, "text1.htm");
>         try
>         {
>             rb.sendRequest(null, new RequestCallback()
>             {
>                 public void onError(Request request, Throwable exception)
>                 {
>
>                 }
>
>                 public void onResponseReceived(Request request, Response 
> response)
>                 {
>                     GWT.log("Response: " + response.getText());
>                     panel1.getElement().setInnerHTML(response.getText());
>                 }
>             });
>         }
>         catch (RequestException e)
>         {
>          
>         }
>
>         final SimplePanel panel2 = new SimplePanel();
>         container.add(panel2);
>
>         // Contains: “Hello World!”
>         rb = new RequestBuilder(RequestBuilder.GET, "text2.htm");
>         try
>         {
>             rb.sendRequest(null, new RequestCallback()
>             {
>                 public void onError(Request request, Throwable exception)
>                 {
>
>                 }
>
>                 public void onResponseReceived(Request request, Response 
> response)
>                 {
>                     GWT.log("Response: " + response.getText());
>                     panel2.getElement().setInnerHTML(response.getText());
>                 }
>             });
>         }
>         catch (RequestException e)
>         {
>            
>         }
>
>         return container;
>     }
> } 
>
>
>  *Note: in case my unicode characters got stripped from this post 
> (TEXT2/content2.html contains the same string with the raw unicode 
> characters).*
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-web-toolkit/-/Zrm7-3Ll--oJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

Reply via email to