このajax関数で日本語の文字を含むフォームを送信すると、その文字は日本語の形式でサーバーに送信され、データはデータベースに¿として格納されます。japaneseをHTMLエンティティに変換する
var strAction = "/_ajax/save/"+sSavePage+"?action=saveseo&intFolderID="+iFolderID+"&intPageID="+iPageID;
var frm = $("#frmSmartPage");
var data = frm.serialize();
$.ajax({
type: frm.attr('method'),
url: strAction,
data: data,
success: function (data) {
alert('ok');
}
});
同じページで、フォームを送信して送信することもできます。その後、ジャパンの文字は&#<number>
形式に変換されます。
<form method="post" target="ajax_save" autocomplete="off" name="frmSmartPage" id="frmSmartPage" action="<%=constBetaPath%>/_ajax/save/pages_save.asp?intPageID=<%=intPageID%>&intFolderID=<%=intFolderID%>&action=save" onSubmit="return validateSave()">
私はAJAX呼び出しで&#<number>
形式に日本の文字を変換することができることを好むだろうが、今のところ、私はすべての運を持っていたやりなさい。私が出回っ試した
もの:
var data = unescape(encodeURIComponent(frm.serialize()));
---
var data = escape(frm.serialize());
---
accepts: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
---
contentType: 'application/x-www-form-urlencoded;'
---
contentType: 'application/x-www-form-urlencoded; charset=UTF-8'
EDIT:
Htmlのエンコーディング:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
編集2:
バックエンドのコードは、ISO-8859-1をデコードしています1〜UTF8
アルバロ・ゴンサレスに'******************************************************************************************************************
'' @SDESCRIPTION: Decodes from ISO-8859-1 to UTF8
'' @PARAM: - s [string]: your string to be decoded
'' @RETURN: [string] decoded string
'' @DESCRIPTION: Usefull to use when saving special chars from a ISO-8859-1 post to an UTF-8 page, example via AJAX
'******************************************************************************************************************
public function DecodeUTF8(s)
dim i
dim c
dim n
s = s + " "
i = 1
do while i <= len(s)
c = asc(mid(s,i,1))
if c and &H80 then
n = 1
do while i + n < len(s)
if (asc(mid(s,i+n,1)) and &HC0) <> &H80 then
exit do
end if
n = n + 1
loop
if n = 2 and ((c and &HE0) = &HC0) then
c = asc(mid(s,i+1,1)) + &H40 * (c and &H01)
else
c = 191
end if
s = left(s,i-1) + chr(c) + mid(s,i+n)
end if
i = i + 1
loop
DecodeUTF8 = Left(s, Len(s)-1)
end function
SOLUTION おかげで、私はsubmitingに使用する一時フォームを作成することで、回避策を作成することができました返信。
var strAction = "/_ajax/save/"+sSavePage+"?action=saveseo&intFolderID="+iFolderID+"&intPageID="+iPageID;
var newForm = $('<form />');
var orginalForm = $("#frmSmartPage");
newForm.append(orginalForm.clone().children());
newForm.attr('method', 'post');
newForm.attr('target', 'ajax_save');
newForm.attr('action', strAction);
newForm.css('display', 'none');
orginalForm.parent().append(newForm);
var target = $("#ajax_save");
target.one('load', function() {
newForm.remove();
});
newForm.submit();
)文字列がUTF-8であることを考慮?テキストエンコーディングは簡単な単純な概念ですが、純粋な推測では正しいことはありません。 –
@ÁlvaroGonzálezHTMLはiso-8859-1でエンコードされています –
日本語の文字をHTMLエンティティに変換するよう求めていますか?もしそうなら、[この表](http://www.rikai.com/library/kanjitables/kanji_codes.unicode.shtml)をチェックし、[this](http://www.amp-what.com/unicode/search/30a2)、文字のHTMLエンティティを検索します。 – evolutionxbox