I have been trying to find a solution for past few hours but unable to do so. I have tried each and every possible solution on the Internet and this forum but nothing seems
Since your data is unicode, use this query:
$sql="update home set content=N'$content'";
Notice the letter N
(as in National).
Google sql N prefix strings.
i wasn't try in Arabic language but i was tried my code in my last project site, the site was available in multi languages. you may just add php function urlencode for save content in database and for retrieving data content use urldecode function.
$content=urlencode($_POST["content"]);
echo $content;
$sql="update home set content='$content'";
for retrieve/print
echo urldecode($data['content']);
or if you don't want this just change column collation type "UTF8_GENERAL_CI"
It looks like all the code on the server side is working properly. The error seems to be happening when the browser submits the form back the server and then either the data is wrong or is mis-interpreted.
1) Please can you confirm that you have the Multi-Byte extension installed. If you don't then PHP will probably be failing to interpret the characters from the browser correctly. http://php.net/manual/en/book.mbstring.php
2) Can you double-check that the page is actually picked up as UTF8 by the browser. It is possible that the browser isn't sure what character set the page is in, but is still displaying the Arabic characters correctly because it's guessing how to display them. So first.
In your HTML, add this meta tag:
Also add this PHP header at top of the script:
header("Content-Type: text/html;charset=UTF-8");
3) If those don't work please can you look at the actual form submission in the browser, either using the developer tools in Chrome or Firebug in Firefox to see exactly what is being submitted.
e.g. I just did a test page to submit some Arabic text to a test page on my server. In the request I can see the form is encoded as
Content-Length: 61
test=%26%231607%3B%26%231594%3B%26%231594%3B%26%231601%3B&go=
Splitting the text into individual characters I can see
%26
%231607
%3B
%26
%231594
%3B
%26
%231594
%3B%26
%231601
%3B
i.e. the Arabic characters are being encoded correctly for me - perhaps you would see something different.