Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    SGWT.mobile - Encoding problem on TableView.updateData

    Hi,

    i am receiving this error when trying to update data from a TableView where the original data contains special "french" accent "ç" character. No problem when Fetching the data but the problem occurs on "update" transaction and seems to be related to a wrong encoding of the "ç" in "Jean-François"

    Code:
    === 2013-01-20 11:30:59,674 [l0-7] DEBUG PoolableSQLConnectionFactory - Executing pingTest 'select 1 from dual' on connection 2084886964
    === 2013-01-20 11:30:59,674 [l0-7] DEBUG RPCManager - Content type for RPC transaction: text/html; charset=UTF-8
    === 2013-01-20 11:30:59,675 [l0-7] DEBUG RPCManager - non-DMI response, dropExtraFields: false
    === 2013-01-20 11:31:13,603 [l0-7] INFO  RequestContext - URL: '/isomorphic/RESTHandler', User-Agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17': Safari with Accept-Encoding header
    === 2013-01-20 11:31:13,604 [l0-7] DEBUG RestRequestParser - Parsing json object: '{"transactionNum":30,"dataSource":"mb_grid_object_contributors","operationType":"update","requestId":"30","showPrompt":null,"data":{"id":298,"contributorTypeName":"Undefined","personCode":"jpe","personName_last":"Peters","id_object":10,"id_type":2,"id_person":57,"id_record":213,"countryCode":"BE","personName_first":"Jean-François","$76w":0}}'
    === 2013-01-20 11:31:13,616 [l0-7] ERROR RESTHandler - Top-level servlet error: 
    com.isomorphic.js.parser.TokenMgrError: Lexical error at line 1, column 328.  Encountered: "\u221a" (8730), after : "\"Jean-Fran"
    	at com.isomorphic.js.parser.JSParserTokenManager.getNextToken(JSParserTokenManager.java:1444)
    	at com.isomorphic.js.parser.JSParser.jj_ntk(JSParser.java:737)
    	at com.isomorphic.js.parser.JSParser.JSDataStructure(JSParser.java:120)
    	at com.isomorphic.js.parser.JSParser.HashLine(JSParser.java:264)
    	at com.isomorphic.js.parser.JSParser.HashLiteral(JSParser.java:219)
    	at com.isomorphic.js.parser.JSParser.JSDataStructure(JSParser.java:122)
    	at com.isomorphic.js.parser.JSParser.HashLine(JSParser.java:264)
    	at com.isomorphic.js.parser.JSParser.HashLiteral(JSParser.java:219)
    	at com.isomorphic.js.parser.JSParser.JSDataStructure(JSParser.java:122)
    	at com.isomorphic.js.parser.JSParser.parseDataStruct(JSParser.java:105)
    	at com.isomorphic.js.parser.JSParser.parseDataStruct(JSParser.java:44)
    	at com.isomorphic.js.JSTranslater.fromJS(JSTranslater.java:1626)
    	at com.isomorphic.js.JSTranslater.fromJS(JSTranslater.java:1615)
    	at com.isomorphic.rpc.RestRequestParser.parseRequest(RestRequestParser.java:200)
    	at com.isomorphic.rpc.RPCManager.<init>(RPCManager.java:286)
    	at com.isomorphic.servlet.RESTHandler.processRequest(RESTHandler.java:307)
    	at com.isomorphic.servlet.RESTHandler.doPost(RESTHandler.java:259)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
    	at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.java:259)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
    	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
    	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
    	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at org.mortbay.jetty.Server.handle(Server.java:324)
    	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
    	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
    	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
    	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
    	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
    	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
    === 2013-01-20 11:31:13,619 [l0-7] INFO  Compression - /isomorphic/RESTHandler: 3159 -> 782 bytes
    Same problem with Forms and with any kind of accents (é,à,...)

    Thanks, Ben.
    Last edited by bda@n-side.com; 20 Jan 2013, 02:58.

    #2
    We don't do this part of the encoding directly, the browser does. This looks like your page is set to the default ISO encoding rather than UTF-8.

    Get the page encoding to be correct is covered in the i18n docs for SmartGWT (non-mobile) - basically with a reference to Google's GWT docs on the same subject.

    Comment


      #3
      My page contains the following tag, as recommended:

      <meta http-equiv="content-type" content="text/html; charset=UTF-8">

      The strange thing is that the exact same operation in the desktop version (whose .html page contains also the above tag) does not produce this error ... and both are using same server code.

      Charset of my page is UTF-8, charset of my DB is UTF-8, the log shows (2nd line) that UTF-8 is used in the RPC. Reading the doc you mentioned (at http://www.smartclient.com/smartgwt/javadoc/com/smartgwt/client/docs/I18n.html) I don't really see what else I can do ?

      Thanks for your help, Ben.

      Comment


        #4
        Any follow-up please ?

        Comment


          #5
          This is my next blocking point, help appreciated. Thanks.

          Comment


            #6
            Why don't you reply to this one ? Please help me, this is really blocking me and I have no clue on how to progress ?

            I made the same test on a simpler form and on a "add" transaction to have shorter logs and I have done the exact same transaction in the desktop version for you to compare:

            Failing transaction with SGWT.mobile
            Code:
            === 2013-02-01 18:23:58,650 [l0-4] INFO  RequestContext - URL: '/isomorphic/RESTHandler', User-Agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17': Safari with Accept-Encoding header
            === 2013-02-01 18:23:58,650 [l0-4] DEBUG RestRequestParser - Parsing json object: '{"transactionNum":51,"dataSource":"ui_form_actions","operationType":"add","requestId":"51","showPrompt":null,"data":{"companyName_short":null,"id_type":1,"description":"ç","id_prospect_contact":null,"name":"Test","id_prospect":308,"sneak":null}}'
            === 2013-02-01 18:23:58,658 [l0-4] ERROR RESTHandler - Top-level servlet error: 
            com.isomorphic.js.parser.TokenMgrError: Lexical error at line 1, column 170.  Encountered: "\u221a" (8730), after : "\""
            	at com.isomorphic.js.parser.JSParserTokenManager.getNextToken(JSParserTokenManager.java:1444)
            	at com.isomorphic.js.parser.JSParser.jj_ntk(JSParser.java:737)
            	at com.isomorphic.js.parser.JSParser.JSDataStructure(JSParser.java:120)
            	at com.isomorphic.js.parser.JSParser.HashLine(JSParser.java:264)
            	at com.isomorphic.js.parser.JSParser.HashLiteral(JSParser.java:219)
            	at com.isomorphic.js.parser.JSParser.JSDataStructure(JSParser.java:122)
            	at com.isomorphic.js.parser.JSParser.HashLine(JSParser.java:264)
            	at com.isomorphic.js.parser.JSParser.HashLiteral(JSParser.java:219)
            	at com.isomorphic.js.parser.JSParser.JSDataStructure(JSParser.java:122)
            	at com.isomorphic.js.parser.JSParser.parseDataStruct(JSParser.java:105)
            	at com.isomorphic.js.parser.JSParser.parseDataStruct(JSParser.java:44)
            	at com.isomorphic.js.JSTranslater.fromJS(JSTranslater.java:1626)
            	at com.isomorphic.js.JSTranslater.fromJS(JSTranslater.java:1615)
            	at com.isomorphic.rpc.RestRequestParser.parseRequest(RestRequestParser.java:200)
            	at com.isomorphic.rpc.RPCManager.<init>(RPCManager.java:286)
            	at com.isomorphic.servlet.RESTHandler.processRequest(RESTHandler.java:307)
            	at com.isomorphic.servlet.RESTHandler.doPost(RESTHandler.java:259)
            	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
            	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
            	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
            	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
            	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
            	at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.java:259)
            	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
            	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
            	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
            	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
            	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
            	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
            	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
            	at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
            	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
            	at org.mortbay.jetty.Server.handle(Server.java:324)
            	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
            	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
            	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
            	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
            	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
            	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
            	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
            === 2013-02-01 18:23:58,660 [l0-4] INFO  Compression - /isomorphic/RESTHandler: 3150 -> 776 bytes
            Successful transaction (exactly the same) with SGWT.desktop
            Code:
            === 2013-02-01 18:29:35,307 [l0-5] INFO  RequestContext - URL: '/moon_desktop/sc/IDACall', User-Agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:18.0) Gecko/20100101 Firefox/18.0': Moz (Gecko) with Accept-Encoding header
            === 2013-02-01 18:29:35,307 [l0-5] DEBUG IDACall - Header Name:Value pair: Host:127.0.0.1:8888
            === 2013-02-01 18:29:35,307 [l0-5] DEBUG IDACall - Header Name:Value pair: User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:18.0) Gecko/20100101 Firefox/18.0
            === 2013-02-01 18:29:35,307 [l0-5] DEBUG IDACall - Header Name:Value pair: Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
            === 2013-02-01 18:29:35,308 [l0-5] DEBUG IDACall - Header Name:Value pair: Accept-Language:en-US,en;q=0.5
            === 2013-02-01 18:29:35,308 [l0-5] DEBUG IDACall - Header Name:Value pair: Accept-Encoding:gzip, deflate
            === 2013-02-01 18:29:35,308 [l0-5] DEBUG IDACall - Header Name:Value pair: Referer:http://127.0.0.1:8888/MOON_DESKTOP.html?gwt.codesvr=127.0.0.1:9997
            === 2013-02-01 18:29:35,308 [l0-5] DEBUG IDACall - Header Name:Value pair: Cookie:com.nside.moon.client_desktop.MoonDesktop.uiversion=2.1.0; com.nside.moon.client_desktop.screens.ScreenProspects.explorerWidth=700; com.nside.moon.client_desktop.screens.ScreenProspects.selectedId=308; com.nside.moon.client_desktop.grids.GridProspects.filterCriteria=%7B%0D%20%20%20%20%22operator%22%3A%22and%22%2C%20%0D%20%20%20%20%22_constructor%22%3A%22AdvancedCriteria%22%2C%20%0D%20%20%20%20%22criteria%22%3A%5B%0D%20%20%20%20%20%20%20%20%7B%0D%20%20%20%20%20%20%20%20%20%20%20%20%22fieldName%22%3A%22person_samCode%22%2C%20%0D%20%20%20%20%20%20%20%20%20%20%20%20%22operator%22%3A%22iContains%22%2C%20%0D%20%20%20%20%20%20%20%20%20%20%20%20%22value%22%3A%22jpe%22%0D%20%20%20%20%20%20%20%20%7D%2C%20%0D%20%20%20%20%20%20%20%20%7B%0D%20%20%20%20%20%20%20%20%20%20%20%20%22fieldName%22%3A%22statusIs_final%22%2C%20%0D%20%20%20%20%20%20%20%20%20%20%20%20%22operator%22%3A%22equals%22%2C%20%0D%20%20%20%20%20%20%20%20%20%20%20%20%22value%22%3Afalse%0D%20%20%20%20%20%20%20%20%7D%0D%20%20%20%20%5D%0D%7D; com.nside.moon.client_desktop.screens.ScreenTaggerProduct.selectedId=1; com.nside.moon.client_desktop.screens.ScreenTaggerAction.selectedId=1; com.nside.moon.client_desktop.screens.ScreenTaggerProspect.selectedId=1; com.nside.moon.client_desktop.screens.ScreenTaggerCompany.selectedId=1; com.nside.moon.client_desktop.screens.ScreenTaggerContact.selectedId=1; com.nside.moon.client_desktop.screens.ScreenTaggerOrder.selectedId=1; com.nside.moon.client_desktop.screens.ScreenTaggerInvoice.selectedId=1; com.nside.moon.client_desktop.screens.ScreenTaggerInvestment.selectedId=1; com.nside.moon.client_desktop.screens.ScreenTaggerPerson.selectedId=1; com.nside.moon.client_desktop.screens.ScreenTaggerEntry.selectedId=1; com.nside.moon.client_desktop.screens.ScreenJournal.selectedFilter=last_30; com.nside.moon.client_desktop.screens.ScreenJournal.objectFilter=; com.nside.moon.client_mobile.security.LoginWindow.username=bda; com.nside.moon.client_desktop.screens.ScreenOrders.explorerWidth=650; com.nside.moon.client_desktop.screens.ScreenOrders.selectedId=258; com.nside.moon.client_desktop.screens.ScreenMoonitor.selectedId=4; com.nside.moon.client_desktop.screens.ScreenProducts.explorerWidth=650; com.nside.moon.client_desktop.screens.ScreenProducts.selectedId=0; com.nside.moon.client_desktop.screens.ScreenInvoices.explorerWidth=900; com.nside.moon.client_desktop.screens.ScreenInvoices.selectedId=0; isc_cState=ready; JSESSIONID=p1s8y83vvgne; com.nside.moon.client_desktop.security.LoginWindow.username=bda
            === 2013-02-01 18:29:35,308 [l0-5] DEBUG IDACall - Header Name:Value pair: Connection:keep-alive
            === 2013-02-01 18:29:35,308 [l0-5] DEBUG IDACall - Header Name:Value pair: Content-Type:application/x-www-form-urlencoded; charset=UTF-8
            === 2013-02-01 18:29:35,308 [l0-5] DEBUG IDACall - Header Name:Value pair: Content-Length:1077
            === 2013-02-01 18:29:35,308 [l0-5] DEBUG IDACall - Header Name:Value pair: Pragma:no-cache
            === 2013-02-01 18:29:35,308 [l0-5] DEBUG IDACall - Header Name:Value pair: Cache-Control:no-cache
            === 2013-02-01 18:29:35,308 [l0-5] DEBUG IDACall - session exists: p1s8y83vvgne
            === 2013-02-01 18:29:35,308 [l0-5] DEBUG IDACall - remote user: null
            === 2013-02-01 18:29:35,317 [l0-5] DEBUG XML - Parsed XML from (in memory stream): 8ms
            === 2013-02-01 18:29:35,318 [l0-5] DEBUG RPCManager - Processing 1 requests.
            === 2013-02-01 18:29:35,320 [l0-5] DEBUG RPCManager - Request #1 (DSRequest) payload: {
                values:{
                    id_prospect:308,
                    sneak:"",
                    id_type:1,
                    name:"Test",
                    description:"ç"
                },
                operationConfig:{
                    dataSource:"ui_form_actions",
                    operationType:"add"
                },
                componentId:"isc_ValuesManager_2",
                appID:"builtinApplication",
                operation:"ui_form_actions_add",
                oldValues:{
                },
                criteria:{
                }
            }
            === 2013-02-01 18:29:35,320 [l0-5] INFO  IDACall - Performing 1 operation(s)
            === 2013-02-01 18:29:35,320 [l0-5] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
            === 2013-02-01 18:29:35,320 [l0-5] DEBUG DeclarativeSecurity - DataSource ui_form_actions is not in the pre-checked list, processing...
            === 2013-02-01 18:29:35,320 [l0-5] DEBUG AppBase - [builtinApplication.ui_form_actions_add] No userTypes defined, allowing anyone access to all operations for this application
            === 2013-02-01 18:29:35,320 [l0-5] DEBUG AppBase - [builtinApplication.ui_form_actions_add] No public zero-argument method named '_ui_form_actions_add' found, performing generic datasource operation
            === 2013-02-01 18:29:35,321 [l0-5] INFO  SQLDataSource - [builtinApplication.ui_form_actions_add] Performing add operation with
            	criteria: {id_prospect:308,sneak:"",id_type:1,name:"Test",description:"ç"}	values: {id_prospect:308,sneak:"",id_type:1,name:"Test",description:"ç"}
            === 2013-02-01 18:29:35,322 [l0-5] INFO  SQLValuesClause - [builtinApplication.ui_form_actions_add] Ignored data for non-existent or included columns: [sneak]
            === 2013-02-01 18:29:35,322 [l0-5] DEBUG SQLValuesClause - [builtinApplication.ui_form_actions_add] Sequences: {id=__default}
            What I see from the 1st log (SGWT.mob) (line 2) is that ç is encoded as √ß in the json string of the transaction while in the 2nd log (SGWT) (last but 3 line) the ç remains a ç in the json.

            Again, in both case UTF-8 is used everywhere I am able to control it.

            I hope this will help to either find the problem or guide me toward a solution.

            Comment


              #7
              This is still an open issue, but was bumped by FF18's giant bugs among other things.

              Right now, we have not been able to reproduce this issue.

              Adding more details (device and OS version, exact contents of .html and relevant i18n settings) may help.

              Comment


                #8
                Device : all (not related to device) (tested on iPhone, Galaxy, simulators for iPad, Chrome, Safari, Firefox) last versions for each.

                OS Version: Mac OS X 10.7.5

                I copy the two .html (mobile and desktop versions, the two are running under the same application context, desktop is served by default). As already mentioned the problem occurs only with the mobile version, the same operation works in desktop.

                MOON_MOBILE.html
                Code:
                <!doctype html>
                <html>
                  <head>
                    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
                    <meta name="apple-mobile-web-app-capable" content="yes">
                    <meta name="viewport" content="initial-scale=1, width=device-width, user-scalable=no, minimum-scale=1, maximum-scale=1">
                
                	<link rel="apple-touch-icon" sizes="57x57" 	 href="apple-touch-icon-57x57.png">
                	<link rel="apple-touch-icon" sizes="72x72" 	 href="apple-touch-icon-72x72.png">
                	<link rel="apple-touch-icon" sizes="114x114" href="apple-touch-icon-114x114.png">
                	<link rel="apple-touch-icon" sizes="144x144" href="apple-touch-icon-144x144.png">
                
                    
                    <title>Moon</title>
                    <script type="text/javascript" language="javascript" src="moon_mobile/moon_mobile.nocache.js"></script>
                    <link rel="stylesheet" href="MOON_MOBILE.css" type="text/css"/>
                    
                  </head>
                
                  <body>
                    <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>
                
                  </body>
                </html>
                MOON_DESKTOP.html
                Code:
                <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                <!-- The HTML 4.01 Transitional DOCTYPE declaration-->
                <!-- above set at the top of the file will set     -->
                <!-- the browser's rendering engine into           -->
                <!-- "Quirks Mode". Replacing this declaration     -->
                <!-- with a "Standards Mode" doctype is supported, -->
                <!-- but may lead to some differences in layout.   -->
                
                <html>
                  <head>
                    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
                    <!--                                           -->
                    <!-- Any title is fine                         -->
                    <!--                                           -->
                    <title>Moon</title>
                    
                    <!-- IMPORTANT : You must set the variable isomorphicDir to [MODULE_NAME]/sc/ so that the SmartGWT resource are 
                	  correctly resolved -->	
                	<script> var isomorphicDir = "moon_desktop/sc/"; </script>
                
                
                    <!--                                           -->
                    <!-- This script loads your compiled module.   -->
                    <!-- If you add any GWT meta tags, they must   -->
                    <!-- be added before this line.                -->
                    <!--                                           -->      
                    <script type="text/javascript" language="javascript" src="moon_desktop/moon_desktop.nocache.js"></script>
                    <link rel="stylesheet" href="MOON_DESKTOP.css" type="text/css"/>
                	<link rel="icon" href="favicon.ico" type="image/x-icon" />
                	<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />    
                  </head>
                
                  <!--                                           -->
                  <!-- The body can have arbitrary html, or      -->
                  <!-- you can leave the body empty if you want  -->
                  <!-- to create a completely dynamic UI.        -->
                  <!--                                           -->
                  <body>
                  
                    <noscript>
                      <div style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif">
                        Your web browser must have JavaScript enabled
                        in order for this application to display correctly.
                      </div>
                    </noscript>
                
                    <!--load the datasources-->
                
                <script src="moon_desktop/sc/DataSourceLoader?dataSource= 
                properties,
                ui_logger,
                ui_reports,
                ui_security_authentication,
                ui_security_rights
                "></script>
                
                <script src="moon_desktop/sc/DataSourceLoader?dataSource= 
                ui_form_accounting,
                ui_form_accounting_,
                ui_form_accounting_fm,
                ui_form_accounting_fm_,
                ui_form_actions,
                ui_form_actions_,
                ui_form_actions_status,
                ui_form_actions_status_,
                ui_form_companies,
                ui_form_companies_,
                ui_form_companies_img,
                ui_form_companies_status,
                ui_form_companies_status_,
                ui_form_contacts,
                ui_form_contacts_,
                ui_form_contacts_img,
                ui_form_contacts_status,
                ui_form_contacts_status_,
                ui_form_dashboard,
                ui_form_dashboard_
                "></script>
                
                
                <script src="moon_desktop/sc/DataSourceLoader?dataSource= 
                ui_form_entries,
                ui_form_entries_,
                ui_form_incomes_forecast_detail,
                ui_form_incomes_forecast_detail_,
                ui_form_entries_status,
                ui_form_entries_status_,
                ui_form_investments,
                ui_form_investments_,
                ui_form_investments_status,
                ui_form_investments_status_,
                ui_form_invoices,
                ui_form_invoices_,
                ui_form_invoices_status,
                ui_form_invoices_status_,
                ui_form_moonitor_,
                ui_form_moonitor
                "></script>
                
                
                <script src="moon_desktop/sc/DataSourceLoader?dataSource= 
                ui_form_orders,
                ui_form_orders_,
                ui_form_orders_status,
                ui_form_orders_status_,
                ui_form_persons,
                ui_form_persons_,
                ui_form_persons_img,
                ui_form_persons_pwd,
                ui_form_persons_salary,
                ui_form_persons_salary_,
                ui_form_persons_status,
                ui_form_persons_status_,
                ui_form_products,
                ui_form_products_,
                ui_form_products_img,
                ui_form_products_status,
                ui_form_products_status_,
                ui_form_prospects,
                ui_form_prospects_,
                ui_form_prospects_status,
                ui_form_prospects_status_
                "></script>
                
                <script src="moon_desktop/sc/DataSourceLoader?dataSource= 
                ui_grid_accounting,
                ui_grid_accounting_actuals,
                ui_grid_accounting_actuals_,
                ui_grid_accounting_budget,
                ui_grid_accounting_budget_,
                ui_grid_accounting_cash,
                ui_grid_accounting_cash_,
                ui_grid_accounting_codes,
                ui_grid_accounting_groups,
                ui_grid_accounts,
                ui_grid_action_statuses,
                ui_grid_action_tags_,
                ui_grid_action_tags,
                ui_grid_action_warnings,
                ui_grid_actions_tag_,
                ui_grid_actions_tag,
                ui_grid_actions,
                ui_grid_companies_tag_,
                ui_grid_companies_tag,
                ui_grid_companies,
                ui_grid_company_statuses,
                ui_grid_company_tags_,
                ui_grid_company_tags,
                ui_grid_company_warnings,
                ui_grid_contact_orders,
                ui_grid_contact_orders_,
                ui_grid_contact_persons,
                ui_grid_contact_persons_,
                ui_grid_contact_prospects,
                ui_grid_contact_prospects_,
                ui_grid_contact_statuses,
                ui_grid_contact_tags_,
                ui_grid_contact_tags,
                ui_grid_contact_warnings,
                ui_grid_contacts_tag_,
                ui_grid_contacts_tag,
                ui_grid_contacts,
                ui_grid_countries,
                ui_grid_currencies,
                ui_grid_cycles_product
                "></script>
                
                
                <script src="moon_desktop/sc/DataSourceLoader?dataSource= 
                ui_grid_entries,
                ui_grid_entry_statuses,
                ui_grid_entry_tags_,
                ui_grid_entry_tags,
                ui_grid_entry_warnings,
                ui_grid_entries_tag_,
                ui_grid_entries_tag,
                ui_grid_genders,
                ui_grid_incomes_forecast_detail,
                ui_grid_industries,
                ui_grid_investment_statuses,
                ui_grid_investment_tags_,
                ui_grid_investment_tags,
                ui_grid_investment_warnings,
                ui_grid_investments_tag_,
                ui_grid_investments_tag,
                ui_grid_investments,
                ui_grid_invoice_statuses,
                ui_grid_invoice_tags_,
                ui_grid_invoice_tags,
                ui_grid_invoice_warnings,
                ui_grid_invoices_tag_,
                ui_grid_invoices_tag,
                ui_grid_invoices,
                ui_grid_journal,
                ui_grid_languages,
                ui_grid_levels_language
                "></script>
                
                
                <script src="moon_desktop/sc/DataSourceLoader?dataSource= 
                ui_grid_object_contributors,
                ui_grid_object_contributors_,
                ui_grid_object_warnings,
                ui_grid_offices,
                ui_grid_order_contacts,
                ui_grid_order_contacts_,
                ui_grid_order_statuses,
                ui_grid_order_tags_,
                ui_grid_order_tags,
                ui_grid_order_warnings,
                ui_grid_orders_tag_,
                ui_grid_orders_tag,
                ui_grid_orders,
                ui_grid_organization_roles,
                ui_grid_organization_tracks,
                ui_grid_periods_fm,
                ui_grid_periods_fq,
                ui_grid_periods_fy,
                ui_grid_person_contacts,
                ui_grid_person_contacts_,
                ui_grid_person_groups,
                ui_grid_person_groups_,
                ui_grid_person_salaries,
                ui_grid_person_statuses,
                ui_grid_person_tags_,
                ui_grid_person_tags,
                ui_grid_person_warnings,
                ui_grid_persons_tag_,
                ui_grid_persons_tag,
                ui_grid_persons,
                ui_grid_priorities_action,
                ui_grid_priorities_investment,
                ui_grid_product_statuses,
                ui_grid_product_tags_,
                ui_grid_product_tags,
                ui_grid_product_warnings,
                ui_grid_products_tag_,
                ui_grid_products_tag,
                ui_grid_products,
                ui_grid_profiles,
                ui_grid_properties,
                ui_grid_prospect_contacts,
                ui_grid_prospect_contacts_,
                ui_grid_prospect_statuses,
                ui_grid_prospect_tags_,
                ui_grid_prospect_tags,
                ui_grid_prospect_warnings,
                ui_grid_prospects_tag_,
                ui_grid_prospects_tag,
                ui_grid_prospects
                "></script>
                
                <script src="moon_desktop/sc/DataSourceLoader?dataSource= 
                ui_grid_roles_contact,
                ui_grid_sectors,
                ui_grid_security_groups,
                ui_grid_security_rights_,
                ui_grid_security_rights,
                ui_grid_sizes_company,
                ui_grid_sources_prospect,
                ui_grid_statuses_action,
                ui_grid_statuses_company,
                ui_grid_statuses_contact,
                ui_grid_statuses_entry,
                ui_grid_statuses_investment,
                ui_grid_statuses_invoice,
                ui_grid_statuses_marital,
                ui_grid_statuses_order,
                ui_grid_statuses_person,
                ui_grid_statuses_product,
                ui_grid_statuses_prospect,
                ui_grid_tags_action,
                ui_grid_tags_company,
                ui_grid_tags_contact,
                ui_grid_tags_entry,
                ui_grid_tags_investment,
                ui_grid_tags_invoice,
                ui_grid_tags_order,
                ui_grid_tags_person,
                ui_grid_tags_product,
                ui_grid_tags_prospect,
                ui_grid_teams,
                ui_grid_titles,
                ui_grid_types_action,
                ui_grid_types_company,
                ui_grid_types_contact,
                ui_grid_types_contributor,
                ui_grid_types_investment,
                ui_grid_types_order,
                ui_grid_types_person,
                ui_grid_types_product,
                ui_grid_types_prospect,
                ui_grid_types_relationship,
                ui_grid_types_reminder,
                ui_grid_types_salary,
                ui_grid_warnings
                "></script>
                
                <script src="moon_desktop/sc/DataSourceLoader?dataSource= 
                ui_list_accounting_codes,
                ui_list_accounting_groups,
                ui_list_accounts,
                ui_list_actions,
                ui_list_amounts,
                ui_list_classes,
                ui_list_companies,
                ui_list_contacts,
                ui_list_countries,
                ui_list_currencies,
                ui_list_cycles_product
                "></script>
                
                
                <script src="moon_desktop/sc/DataSourceLoader?dataSource= 
                ui_list_entries,
                ui_list_genders,
                ui_list_industries,
                ui_list_investments,
                ui_list_invoices,
                ui_list_languages,
                ui_list_levels_language
                "></script>
                
                
                <script src="moon_desktop/sc/DataSourceLoader?dataSource= 
                ui_list_objects,
                ui_list_offices,
                ui_list_operations,
                ui_list_orders,
                ui_list_organization_roles,
                ui_list_organization_tracks,
                ui_list_periods_fm,
                ui_list_periods_fq,
                ui_list_periods_fy,
                ui_list_persons,
                ui_list_priorities_action,
                ui_list_priorities_investment,
                ui_list_products,
                ui_list_profiles,
                ui_list_prospects_contact,
                ui_list_prospects
                "></script>
                
                
                <script src="moon_desktop/sc/DataSourceLoader?dataSource= 
                ui_list_roles_contact,
                ui_list_sectors,
                ui_list_security_groups,
                ui_list_sizes_company,
                ui_list_sources_prospect,
                ui_list_statuses_action,
                ui_list_statuses_company,
                ui_list_statuses_contact,
                ui_list_statuses_entry,
                ui_list_statuses_investment,
                ui_list_statuses_invoice,
                ui_list_statuses_marital,
                ui_list_statuses_order,
                ui_list_statuses_person,
                ui_list_statuses_product,
                ui_list_statuses_prospect,
                ui_list_tags_action,
                ui_list_tags_company,
                ui_list_tags_contact,
                ui_list_tags_entry,
                ui_list_tags_investment,
                ui_list_tags_invoice,
                ui_list_tags_order,
                ui_list_tags_person,
                ui_list_tags_product,
                ui_list_tags_prospect,
                ui_list_teams,
                ui_list_titles,
                ui_list_types_action,
                ui_list_types_company,
                ui_list_types_contact,
                ui_list_types_contributor,
                ui_list_types_investment,
                ui_list_types_order,
                ui_list_types_person,
                ui_list_types_product,
                ui_list_types_prospect,
                ui_list_types_relationship,
                ui_list_types_reminder,
                ui_list_types_salary
                "></script>
                
                  </body>
                </html>
                web.xml (note that the two versions, desktop and mobile, are running under the same web application)
                Code:
                <?xml version="1.0" encoding="UTF-8"?>
                <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
                              http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
                         version="2.5"
                         xmlns="http://java.sun.com/xml/ns/javaee">
                
                    <listener>
                        <listener-class>com.nside.moon.server.listener.MYSQLServletContextListener</listener-class>
                    </listener>
                
                    <!-- Note: The servlets/filters referenced here are documented in the SDK javadoc -->
                    <!-- //>FileLoader -->
                    <!-- Dynamic Compression -->
                    <filter>
                        <filter-name>CompressionFilter</filter-name>
                        <filter-class>com.isomorphic.servlet.CompressionFilter</filter-class>
                    </filter>
                    <!-- CompressionFilter for dynamic compression -->
                    <filter-mapping>
                        <filter-name>CompressionFilter</filter-name>
                        <url-pattern>/*</url-pattern>
                    </filter-mapping>
                    <!-- //<FileLoader -->
                    
                    <!-- The IDACall servlet handles all Built-in DataSource operations -->
                    <servlet>
                        <servlet-name>IDACall</servlet-name>
                        <servlet-class>com.isomorphic.servlet.IDACall</servlet-class>
                    </servlet>
                    
                    <!-- The RESTHandler servlet is like IDACall, but for REST requests -->
                    <servlet>
                        <servlet-name>RESTHandler</servlet-name>
                        <servlet-class>com.isomorphic.servlet.RESTHandler</servlet-class>
                		<init-param>
                			<param-name>defaultDataFormat</param-name>
                			<param-value>json</param-value>
                		</init-param>
                		<init-param>
                			<param-name>wrapJSONResponses</param-name>
                			<param-value>false</param-value>
                		</init-param>
                    </servlet>
                
                    <!-- The DataSourceLoader servlet returns Javascript representations of the dataSources whose
                         ID's are passed to it - it is an alternative to using the <loadDS> JSP tag -->
                    <servlet>
                        <servlet-name>DataSourceLoader</servlet-name>
                        <servlet-class>com.isomorphic.servlet.DataSourceLoader</servlet-class>
                    </servlet>    
                
                    <!-- The FileDownload servlet downloads static files, like a webserver -->
                    <servlet>
                        <servlet-name>FileDownload</servlet-name>
                        <servlet-class>com.isomorphic.servlet.FileDownload</servlet-class>
                    </servlet>
                
                	<!-- ISC init: initializes ISC framework -->
                    <servlet>
                        <servlet-name>Init</servlet-name>
                        <servlet-class>com.isomorphic.base.Init</servlet-class>
                        <load-on-startup>1</load-on-startup>
                    </servlet>
                	  
                    <servlet>
                        <servlet-name>HttpProxy</servlet-name>
                        <servlet-class>com.isomorphic.servlet.HttpProxyServlet</servlet-class>
                    </servlet>
                
                    <!-- The PreCache servlet initializes when the servlet engine starts up and pre-loads 
                         data need for all client requests.  This is optional, and improves performance
                         of the first few page requests.  PreCache cannot be invoked by a browser, because
                         there is no "servlet-mapping" defined for it. -->
                         
                    <!-- PreCache is disabled by default because of an issue when debugging
                         the project for the first time. However, it can be safely enabled
                         when compiling with the GWT compiler prior to deployment. See
                         the README.txt for more information. -->
                         
                    <!-- 
                    <servlet>
                        <servlet-name>PreCache</servlet-name>
                        <servlet-class>com.isomorphic.servlet.PreCache</servlet-class>
                        <load-on-startup>2</load-on-startup>
                    </servlet>
                    -->
                
                
                    <!-- RPCManager uses this URL by default for Built-in DataSource operations -->
                    <servlet-mapping>
                        <servlet-name>IDACall</servlet-name>
                        <url-pattern>/moon_desktop/sc/IDACall/*</url-pattern>
                    </servlet-mapping>
                    
                    <servlet-mapping>
                        <servlet-name>RESTHandler</servlet-name>
                        <url-pattern>/moon_destop/sc/RESTHandler/*</url-pattern>
                    </servlet-mapping>
                    
                	<servlet-mapping>
                		<servlet-name>RESTHandler</servlet-name>
                		<url-pattern>/isomorphic/RESTHandler</url-pattern>
                	</servlet-mapping>
                    
                
                    <!-- DataSourceLoader requests -->
                    <servlet-mapping>
                        <servlet-name>DataSourceLoader</servlet-name>
                        <url-pattern>/moon_desktop/sc/DataSourceLoader</url-pattern>
                    </servlet-mapping>
                
                	<servlet-mapping>
                		<servlet-name>DataSourceLoader</servlet-name>
                		<url-pattern>/isomorphic/DataSourceLoader</url-pattern>
                	</servlet-mapping>
                
                    <servlet-mapping>
                        <servlet-name>HttpProxy</servlet-name>
                        <url-pattern>/moon_desktop/sc/HttpProxy/*</url-pattern>
                    </servlet-mapping>
                
                    <!-- Use FileDownload servlet to download all static content that's part of the skin, such as
                         image files, so we can set Expires headers and other cache control directives.  In a
                         production deployment, you'd want to use a webserver such as Apache to do this.  
                    -->
                    <servlet-mapping>
                      <servlet-name>FileDownload</servlet-name>
                      <url-pattern>/moon_desktop/sc/skins/*</url-pattern>
                    </servlet-mapping>
                
                    <!-- serve ISC modules compressed, with expires headers -->
                    <servlet-mapping>
                        <servlet-name>FileDownload</servlet-name>
                        <url-pattern>/moon_desktop/sc/system/modules/*</url-pattern>
                    </servlet-mapping>
                
                    <!-- serve ISC development modules compressed, with expires headers -->
                    <servlet-mapping>
                        <servlet-name>FileDownload</servlet-name>
                        <url-pattern>/moon_desktop/sc/system/development/*</url-pattern>
                    </servlet-mapping>
                
                    <!-- server skin assets with expires headers -->
                    <servlet-mapping>
                        <servlet-name>FileDownload</servlet-name>
                        <url-pattern>/moon_desktop/sc/system/reference/skin/*</url-pattern>
                    </servlet-mapping>
                
                    <!-- General config -->
                    <session-config>
                        <session-timeout>30</session-timeout>
                    </session-config>
                
                    <jsp-config>
                        <!-- Isomorphic JSP tags -->
                        <taglib>
                            <taglib-uri>isomorphic</taglib-uri> 
                            <taglib-location>/WEB-INF/iscTaglib.xml</taglib-location> 
                        </taglib>
                    </jsp-config>
                
                    <mime-mapping>
                        <extension>manifest</extension>
                        <mime-type>text/cache-manifest</mime-type>
                    </mime-mapping>
                    
                    <mime-mapping>
                        <extension>ico</extension>
                        <mime-type>image/x-icon</mime-type>
                    </mime-mapping>
                
                  
                  <!-- Default page to serve -->
                  <welcome-file-list>
                    <welcome-file>MOON_DESKTOP.html</welcome-file>
                  </welcome-file-list>
                
                </web-app>
                i18n settings : what are you referring to ?
                Last edited by bda@n-side.com; 5 Feb 2013, 00:43.

                Comment


                  #9
                  Using Chrome debug tool I have been able to capture the request header that causes the problem. In this case, I tried to record "ç" in the field "name". Hope this helps.

                  Code:
                  Request URL:http://127.0.0.1:8888/isomorphic/RESTHandler?isc_dataFormat=json
                  Request Method:POST
                  Status Code:200 OK
                  Request Headersview source
                  Accept:application/json,*/*
                  Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
                  Accept-Encoding:gzip,deflate,sdch
                  Accept-Language:en-US,en;q=0.8
                  Connection:keep-alive
                  Content-Length:243
                  Content-Type:application/json;charset=UTF-8
                  Cookie:settingStore=1347350636886_0; com.nside.moon.client_desktop.security.LoginWindow.username=bda; com.nside.moon.client_desktop.screens.ScreenActions.explorerWidth=800; com.nside.moon.client_desktop.screens.ScreenActions.selectedId=0; com.nside.moon.client_desktop.MoonDesktop.uiversion=2.1.0; isc_cState=ready; JSESSIONID=b8mrp6nrob1r; com.nside.moon.client_mobile.security.LoginWindow.username=bda
                  Host:127.0.0.1:8888
                  Origin:http://127.0.0.1:8888
                  Referer:http://127.0.0.1:8888/MOON_MOBILE.html?gwt.codesvr=127.0.0.1:9997
                  User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17
                  Query String Parametersview sourceview URL encoded
                  isc_dataFormat:json
                  Request Payload
                  {"transactionNum":52,"dataSource":"ui_form_actions","operationType":"add","requestId":"52","showPrompt":null,"data":{"companyName_short":null,"id_type":2,"description":null,"id_prospect_contact":363,"name":"ç","id_prospect":308,"sneak":null}}
                  Response Headersview source
                  Content-Encoding:gzip
                  Content-Length:775
                  Content-Type:text/html; charset=utf-8
                  Server:Jetty(6.1.x)
                  X-Included-Test:true
                  X-Included-Test2:true
                  and the response :
                  Code:
                  <BR>com.isomorphic.servlet.RESTHandler top-level exception<BR>
                  <PRE>
                  com.isomorphic.js.parser.TokenMgrError: Lexical error at line 1, column 208.  Encountered: "\u221a" (8730), after : "\""
                  	at com.isomorphic.js.parser.JSParserTokenManager.getNextToken(JSParserTokenManager.java:1444)
                  	at com.isomorphic.js.parser.JSParser.jj_ntk(JSParser.java:737)
                  	at com.isomorphic.js.parser.JSParser.JSDataStructure(JSParser.java:120)
                  	at com.isomorphic.js.parser.JSParser.HashLine(JSParser.java:264)
                  	at com.isomorphic.js.parser.JSParser.HashLiteral(JSParser.java:219)
                  	at com.isomorphic.js.parser.JSParser.JSDataStructure(JSParser.java:122)
                  	at com.isomorphic.js.parser.JSParser.HashLine(JSParser.java:264)
                  	at com.isomorphic.js.parser.JSParser.HashLiteral(JSParser.java:219)
                  	at com.isomorphic.js.parser.JSParser.JSDataStructure(JSParser.java:122)
                  	at com.isomorphic.js.parser.JSParser.parseDataStruct(JSParser.java:105)
                  	at com.isomorphic.js.parser.JSParser.parseDataStruct(JSParser.java:44)
                  	at com.isomorphic.js.JSTranslater.fromJS(JSTranslater.java:1626)
                  	at com.isomorphic.js.JSTranslater.fromJS(JSTranslater.java:1615)
                  	at com.isomorphic.rpc.RestRequestParser.parseRequest(RestRequestParser.java:200)
                  	at com.isomorphic.rpc.RPCManager.<init>(RPCManager.java:286)
                  	at com.isomorphic.servlet.RESTHandler.processRequest(RESTHandler.java:307)
                  	at com.isomorphic.servlet.RESTHandler.doPost(RESTHandler.java:259)
                  	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
                  	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
                  	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
                  	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
                  	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
                  	at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.java:259)
                  	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
                  	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
                  	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
                  	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
                  	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
                  	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
                  	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
                  	at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
                  	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
                  	at org.mortbay.jetty.Server.handle(Server.java:324)
                  	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
                  	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
                  	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
                  	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
                  	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
                  	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
                  	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
                  </PRE>
                  Last edited by bda@n-side.com; 5 Feb 2013, 04:29.

                  Comment


                    #10
                    I have been able to work around my problem by setting URIEncoding="UTF-8" in the <Connector> of server.xml of tomcat.
                    However this is not a proper solution since it might be conflicting with other applications deployed in the same tomcat and not using UTF-8. Moreover this should not be required since in the desktop version of SGWT the problem does not occur. And finally this is not solving the problem in debug mode either.

                    So, I hope a proper solution can be found.

                    Thanks for investigating, Ben.

                    Comment


                      #11
                      This basically means SmartGWT is not in the loop. Tomcat is must be serving the file in ISO instead of UTF-8.

                      Have you tried using a text editor that allows you to specify that a file should be saved in UTF-8? That might cause Tomcat to server it with the correct encoding.

                      Comment


                        #12
                        Sorry, I don't understand why your are talking about file ? My problem occurs during an "add" or "update" transaction between a FormItem (in SGWT.mobile) and the SQL DB. There is no file upload/download involved. The encoding is wrongly done somewhere between the formItem content and the json of the transaction (see the logs). I am ready to try whatever you suggest to help spotting the problem but this time i don"t understand what and why you ask

                        Comment


                          #13
                          If you were able to fix the problem by setting Tomcat's default encoding to UTF-8, this implies your bootstrap .html file is being served by Tomcat in ISO format. Try saving the bootstrap file in UTF-8 to avoid this.

                          Comment


                            #14
                            Ok I understand what you mean. My default encoding in Eclipse was MacRoman. I changed it to UTF-8, save my .html file, and it works fine now, in debug and in tomcat (without altering URIEncoding).

                            Should I check encoding of other files?

                            Many thanks for your help!

                            Comment


                              #15
                              Yes, you should probably revisit the encoding of any other text files you created or edited while you had the MacRoman encoding as your default.

                              Comment

                              Working...
                              X