2012-07-12 41 views
0

我已經在java中編寫了一個代碼,其中有表單(輸入字段),最後是底部的發送電子郵件按鈕。當用戶點擊按鈕時,輸入字段中的數據應該被提取出來,然後在電子郵件中用作身體的數據。Java郵件中的URL編碼

這是我的代碼有:

if (role.getValue().equals("1")) {   
    Desktop desktop = Desktop.getDesktop(); 
    String message = "mailto:[email protected]?subject=Profildaten&body=" + 
        "Externe%20Referenz:%20" + 
        person.getExternalReference() + "%20" + "-%20" + 
        person.getExternalReferenceType() + "%0A" + 
        person.getTitle() + "%20" + 
        person.getContactLandline() + "%0A" + 
        "Mobil:%20" + person.getContactMobile() + "%0A" + 
        "Addresse:" + person.getContactStreet(); 

    URI uri = URI.create(message); 
    try { 
     desktop.mail(uri); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

它所有的工作完美,但唯一的問題是地址:person.getContactStreet()的實際輸入字段要求用戶輸入街道名稱,以及通常它會是兩個詞,例如克倫威爾路 - 在克倫威爾和路之間的空間。現在電子郵件的主體不允許有空格和其他無效字符,因此彈出錯誤消息說輸入了無效字符。我如何讓它接受這個或將無效字符自動轉換爲網址編碼?

回答

5

看看這個網站,它會告訴你如何自動將URLS編碼到主體中。

Best way to encode URL in Java

+0

我不太清楚該怎麼做,因爲。它在論壇中說過,我可以用+或%20替換空間。但是,如果用戶手動輸入數據到字段中,我不能讓他這樣做。用戶將通常使用空格輸入數據,但這不會被程序接受。它周圍有什麼方法? – Pita 2012-07-12 09:55:02

+0

使用Pita Sivam提供的鏈接的詳細信息,您可以對用戶在服務器端輸入的數據進行編碼,而不必強制用戶以編碼形式輸入數據。 – Logan 2012-07-12 10:12:02

+0

@Logan - 是的,我已經看到了鏈接,但這是一個URL編碼器。有什麼比如字符串編碼器,以便來自用戶的輸入被自動編碼? – Pita 2012-07-12 11:50:21