Uploaded image for project: 'Undertow'
  1. Undertow
  2. UNDERTOW-1278

FormEncodedDataDefinition doParse error

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Minor Minor
    • None
    • 1.4.23.Final
    • Core
    • None
    • Hide

      var xhr = new XMLHttpRequest();
      xhr.open('POST', 'http://127.0.0.1:8080/Test', true);
      xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
      xhr.send('test=我是中文');

      Show
      var xhr = new XMLHttpRequest(); xhr.open('POST', 'http://127.0.0.1:8080/Test', true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send('test=我是中文');

      我遇到客戶伺服器發送中文參數過來的時候,中文字變成無法辨識的文字,雖然我知道客戶沒有對參數做URLEncoder.encode,但是這樣的情況再Tomcat和Jetty都沒有出現。
      我發現問題出在byte直接轉換成char,而不是new String(byte[])。

      class:
      https://github.com/undertow-io/undertow/blob/master/core/src/main/java/io/undertow/server/handlers/form/FormEncodedDataDefinition.java

      // Some comments here
                                      case 2: {
                                          if (n == '&') {
                                              data.add(name, builder.toString());
                                              builder.setLength(0);
                                              state = 0;
                                          } else if (n == '%' || n == '+') {
                                              state = 3;
                                              builder.append((char) n);
                                          } else {
                                              builder.append((char) n);
                                          }
                                          break;
                                      }
      

              Unassigned Unassigned
              clarewu 建成 吳 (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated: