问问题
1234 次
4 回答
1
PHP
在将序列化位保存到数据库之前,您是否尝试过将其解析为字符串?
parse_str($_POST['field_name'], $php_variable_name);
并$php_variable_name
在您的插入查询中使用?
希望这可以帮助 :-)
于 2012-08-20T18:20:10.917 回答
1
这似乎是 jQuery 的 serialize() 方法的一个普遍问题。
有一篇文章提出了解决方案,但请务必阅读评论。
http://forum.jquery.com/topic/serialize-problem-with-latin-1-iso-8859-1-and-solution
于 2012-08-20T18:39:26.710 回答
0
JQuery 内部使用encodeURIComponent,无论如何,所有数据都以UTF-8 传输。再试一次 iconv,但使用 UTF-8 转换器。
$f = iconv('UTF-8', 'ISO-8859-1', $_POST['f']);
请注意,MySql 对所有传递的数据进行另一次转换。
于 2012-08-20T18:29:55.607 回答
0
似乎 Javascript 的 encodeURIComponent() 对字符的编码不同于实际的表单提交。最终重写了 javascript encodeURIComponent 函数来解决这个问题......不是最高效的解决方案,但没有其他解决方案出现:
var encodeURIComponent = ( function() {
var encodeURIComponentOriginal = encodeURIComponent;
return function ( input ) {
var toReplace = [
'%E2%80%9A',
'%E2%80%A6',
'%E2%80%98',
'%E2%80%99',
'%E2%80%9C',
'%E2%80%9D',
'%E2%80%93',
'%E2%80%94',
'%E2%84%A2',
'%C2%A9',
'%C2%AE',
];
var replaceWith = [
'%82', // ‚
'%85', // …
'%91', // '
'%92', // '
'%93', // "
'%94', // "
'%96', // –
'%97', // —
'%99', // ™
'%A9', // ©
'%AE', // ®
];
var output = encodeURIComponentOriginal( input );
var length = toReplace.length;
for ( var i = 0; i < length; i++ ) {
var regexp = new RegExp( toReplace[i], 'g' );
output = output.replace( regexp , replaceWith[i] );
}
return output;
};
} )();
于 2012-08-21T16:07:51.620 回答