You need to sign in to do that
Don't have an account?
please help me? how can i receive a parameter (encoding gb2312)
system.debug(System.Encodingutil.urlEncode('你好', 'gb2312'));
output "%C4%E3%BA%C3"
system.debug(System.Encodingutil.urlEncode('你好', 'utf-8'));
output "%E4%BD%A0%E5%A5%BD"
Page:
<apex:inputTextarea value="{!fchrMsg}" id="fchrMsg"/>
class:
public string fchrMsg{
get{
if(fchrMsg == null){
string fchrTmpMsg = ApexPages.currentPage().getParameters().get('msg');
if(fchrTmpMsg != null)
fchrMsg = System.Encodingutil.urlDecode(fchrTmpMsg, 'gb2312');
else
fchrMsg = '';
}
return fchrMsg;
}
set{
fchrMsg = value;
}
}
I want to receive parameter by the url "mypage?msg=%C4%E3%BA%C3"
but i get a null value
Who can help me!
Apex 好像 没有 System.Encodingutil.urlEncode 这个方法吧。
UrlEncode的数据在服务器端接收的时候是不需要Dcode的,会自动Decode的。
另外,在浏览器地址栏中传输的编码基本上都是UTF-8.
所以,你Encdoe的时候不需要加上后面的 utf-8
给你代码你测试一下吧。
前端:
<apex:page controller="PageTest"><apex:form> <apex:inputTextarea value="{!msg}"/> </apex:form> <a href="javascript:window.location=window.location+'&msg={!myVar}'">点我吧</a></apex:page>
后端:
public class PageTest{ public String msg{ get{ return ApexPages.CurrentPage().getParameters().get('msg'); } set; } public String myVar{ get{ return '你好'; } }}
这个肯定是可以的,不用测试了
我的情况是在salesforce外面调用的(把page发布成webservice),传进来的时候,msg内容是gb2312编码的.所以接不到参数
public class PageTest{
public String msg{
get{
return ApexPages.CurrentPage().getParameters().get('msg');
}
set;
}
public String myVar{
get{
return '%C4%E3%BA%C3';
}
}
}
改成这样子,获取的msg就是空了,你看一下
或者你这样:
在page后面加上参数:?msg=%C4%E3%BA%C3
你看看获取的msg内容是不是空
我叫Chun Liew.
你们是在中国的吗?
如果是,请和我联系,我的邮箱是c.liew@directhr.net。谢谢,
Chun
请注意:浏览器地址栏中不能用gb2312编码过的参数。必须要用utf-8去编码。如:你给出的代码,只要把参数改成utf-8就可以了
public class PageTest{
public String msg{
get{
return ApexPages.CurrentPage().getParameters().get('msg');
}
set;
}
public String myVar{
get{
//return '%C4%E3%BA%C3';
}
}
}