从Base64到HTML的阿拉伯字符

时间:2014-07-10 06:34:45

标签: html mysql character-encoding base64

我从android手机获取数据,我将它存储在mysql数据库中,然后我必须在网页上显示它。它适用于英文字符,但对于其他外语字符则不适用(如阿拉伯语,波斯语,卡纳达语等)。所以我决定从移动设备发送base64格式,我将它以base64格式存储在mysql数据库中,并在网页上显示时我将它从base64解码回普通字符,但是没有用。它以这种格式显示:

Ùا Ù٠اÙØ´Ùرة اÙÙÙحدة "ÙÙÙÙÙÙد" Ø

perl中使用的代码:

my $cgi = new CGI '-utf8';
use MIME::Base64;
binmode STDOUT, ":utf8";
use Encode 'decode_utf8';

print $cgi->header(
-type => 'text/html',
-charset => 'utf8',
);


print qq~<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>~;

print decode_base64("2YXYpyDZh9mKINin2YTYtNmB2LHYqSDYp9mE2YXZiNit2K/YqSAi2YrZiNmG2ZDZg9mI2K8iINif");

print qq~</body></html>~;

decode_base64会转换回阿拉伯字符,但它在浏览器中不起作用。

我有什么遗漏或无法在db64中的base64中存储阿拉伯字符并立即转换为html吗?

1 个答案:

答案 0 :(得分:0)

我删除binmode STDOUT, ":utf8";之后的工作是简化版本:

#!/usr/bin/perl

use CGI;

my $cgi = new CGI;
use MIME::Base64;

print $cgi->header(
-charset => 'utf8',
);

print qq~<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html> <meta name="description" content="Displaying foreign languages with incompatible character sets using Unicode."/>
</head>
<body>~;
print decode_base64("2YXYpyDZh9mKINin2YTYtNmB2LHYqSDYp9mE2YXZiNit2K/YqSAi2YrZiNmG2ZDZg9mI2K8iINif");

print qq~</body></html>~;