php5.2 Json中文乱码解决方法
json_encode对中文的处理是有问题的,
1.不能处理GB编码,所有的GB编码都会替换成空字符.
2.utf8编码的中文被编码成unicode编码,相当于javascript的escape函数处理的结果.
为了能正确使用json,首先我们就应该在编码上采用utf8编码,然后再对json_encode的返回结果稍加处理就可以得到正确的结果了。
我写了一个简单的类,将这两个函数包装了一下,
class Json{ public static function encode($str){ $code = json_encode($str); return preg_replace("#\u([0-9a-f]+)#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '\1'))", $code); } public static function decode($str){ return json_decode($str); } } 使用的时候
Json::encode($code); Json::decode($code); 这样可以正确处理utf8编码的中文了。
PS:对于GB编码的中文,我们可以在编码时先转成UTF8编码,再进行编码,解码的时候再进行一个utf8 -> gb的转换就可以了。
另外一般json_encode的结果我们是返回到客户端来使用,我们其实还可以用javascript的unescape函数来对unicode编码的中文进行解码,从而还原成正确的中文。
或者用:$title = mb_convert_encoding($title, 'HTML-ENTITIES', $this->_outCharset);//任意编码下都正常显示
- <?php
- /**
- * @file class.126http.php
- * 获得126邮箱通讯录列表
- * @author jvones<jvones@gmail.com> http://www.jvones.com/blog
- * @date 2009-09-26
- **/
- class http126
- {
- private function login($username, $password)
- {
- //第一步:初步登陆
- $cookies = array();
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($ch, CURLOPT_URL, "https://reg.163.com/logins.jsp?type=1&product=mail126&url=http://entry.mail.126.com/cgi/ntesdoor?hid%3D10010102%26lightweight%3D1%26verifycookie%3D1%26language%3D0%26style%3D-1");
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, "username=".$username."@126.com&password=".$password);
- curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);
- curl_setopt($ch,CURLOPT_HEADER,1);
- curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- $str = curl_exec($ch);
- //file_put_contents('./126result.txt', $str);
- curl_close($ch);
- //获取redirect_url跳转地址,可以从126result.txt中查看,通过正则在$str返回流中匹配该地址
- preg_match("/replace("(.*?)");/", $str, $mtitle);
- $_url1 = $mtitle[1];
- //file_put_contents('./126resulturl.txt', $redirect_url);
- //第二步:再次跳转到到上面$_url1
- $ch = curl_init($_url1);
- curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch,CURLOPT_COOKIEFILE,COOKIEJAR);
- curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);
- curl_setopt($ch,CURLOPT_HEADER,1);
- $str2 = curl_exec($ch);
- curl_close($ch);
- if (strpos($contents, "安全退出") !== false)
- {
- return 0;
- }
- return 1;
- }
- /**
- * 获取邮箱通讯录-地址
- * @param $user
- * @param $password
- * @param $result
- * @return array
- */
- public function getAddressList($username, $password)
- {
- if (!$this->login($username, $password))
- {
- return 0;
- }
- $header = $this->_getheader($username);
- if (!$header['sid'])
- {
- return 0;
- }
- //测试找出sid(很重要)和host
- //file_put_contents('./host.txt', $header['host']);
- //file_put_contents('./sid.txt', $header['sid']);
- //开始进入模拟抓取
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, "http://".$header['host']."/a/s?sid=".$header['sid']."&func=global:sequential");
- curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR);
- curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/xml"));
- $str = "<?xml version="1.0"?><object><array name="items"><object><string name="func">pab:searchContacts</string><object name="var"><array name="order"><object><string name="field">FN</string><boolean name="ignoreCase">true</boolean></object></array></object></object><object><string name="func">user:getSignatures</string></object><object><string name="func">pab:getAllGroups</string></object></array></object>";
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $str);
- curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);
- ob_start();
- curl_exec($ch);
- $contents = ob_get_contents();
- ob_end_clean();
- curl_close($ch);
- //get mail list from the page information username && emailaddress
- preg_match_all("/<strings*name="EMAIL;PREF">(.*)</string>/Umsi",$contents,$mails);
- preg_match_all("/<strings*name="FN">(.*)</string>/Umsi",$contents,$names);
- $users = array();
- foreach($names[1] as $k=>$user)
- {
- //$user = iconv($user,'utf-8','gb2312');
- $users[$mails[1][$k]] = $user;
- }
- if (!$users)
- {
- return '您的邮箱中尚未有联系人';
- }
- return $users;
- }
- /**
- * Get Header info
- */
- private function _getheader($username)
- {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, "http://entry.mail.126.com/cgi/ntesdoor?hid=10010102&lightweight=1&verifycookie=1&language=0&style=-1&username=".$username."@126.com");
- curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR); //当前使用的cookie
- curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR); //服务器返回的新cookie
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_HEADER, true);
- curl_setopt($ch, CURLOPT_NOBODY, true);
- $content=curl_exec($ch);
- preg_match_all('/Location:s*(.*?)rn/i',$content,$regs);
- $refer = $regs[1][0];
- preg_match_all('/http://(.*?)//i',$refer,$regs);
- $host = $regs[1][0];
- preg_match_all("/sid=(.*)/i",$refer,$regs);
- $sid = $regs[1][0];
- curl_close($ch);
- return array('sid'=>$sid,'refer'=>$refer,'host'=>$host);
- }
- }
- ?>
php 自动下载远程服务器文件
<form method="post">
<input name="url" size="50" />
<input name="submit" type="submit" />
</form>
< ?php
// maximum execution time in seconds
set_time_limit (24 * 60 * 60);
if (!isset($_POST['submit'])) die();
// folder to save downloaded files to. must end with slash
$destination_folder = 'temp/';
$url = $_POST['url'];
$newfname = $destination_folder . basename($url);
$file = fopen ($url, "rb");
if ($file) {
$newf = fopen ($newfname, "wb");
if ($newf)
while(!feof($file)) {
fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );
}
}
if ($file) {
fclose($file);
}
if ($newf) {
fclose($newf);
}
?>
<?php
//PHP部分:
//取得下拉联动数据
require("conn.php");
$result=mysql_query("SELECT * FROM units LEFT JOIN users ON (users.unit=units.unid)");
$mx=mysql_num_rows($result);
for ($i=0;$i<$mx;$i++) {
$r=mysql_fetch_array($result);
$uname=$r['uname'];
$unid =$r['unid'];
$usname=$r['username'];
$usid=$r['userid'];
if ($lasun!=$uname) {
$java1=$java1 . ""$uname",";
$java2=$java2 . ""$unid",";
$lasun=$uname;
if ($i>0) {
$java3=$java3 . "],[";
$java4=$java4 . "],[";
}
} else {
$java3=$java3 . ",";
$java4=$java4 . ",";
}
$java3= $java3 . ""$usname"";
$java4= $java4 . ""$usid"";
}
$java1="[" . substr_replace($java1,"",-1) . "]n";
$java2="[" . substr_replace($java2,"",-1) . "]n";
$java3="[[" . $java3 . "]]n";
$java4="[[" . $java4 . "]]n";
//javascript部分
?>
<SCRIPT LANGUAGE="JavaScript" DEFER>
var fMenu = <?=$java1?>
var fValue = <?=$java2?>
var sMenu = <?=$java3?>
var sValue = <?=$java4?>
var oWhere = document.all.tar;
var ofMenu = document.createElement("<SELECT name='unid'>");
var osMenu = document.createElement("<SELECT name='usid'>");
with(oWhere)appendChild(ofMenu),appendChild(osMenu);
createMainOptions();
createSubOptions(0);
ofMenu.onchange = function() {createSubOptions(this.selectedIndex);};
function createMainOptions() {
for(var i=0;i<fMenu.length;i++)ofMenu.options[i] = new Option(fMenu[i],fValue[i]);
}
function createSubOptions(j) {
with(osMenu) {
length=0;
for(var i=0;i<sMenu[j].length;i++)osMenu.options[i] = new Option(sMenu[j][i],sValue[j][i]);
}
}
function checkuser() {
if (document.forms[1].elements[1].value=="") { alert("没有选择用户"); return false; }
}
</SCRIPT>
<!-- 在HTML中引用 -->
<div id="tar" style="display:inline"></div>
<!--
另外附users和units数据表结构
表users:
userid
username
unit
表units:
unid
uname
第一步 找到这个文件 /fckeditoreditorfilemanagerbrowserdefaultfrmresourceslist.html
将已经存在的代码修改为:
代码:
oListManager.GetFolderRowHtml = function( folderName, folderPath )
{
// Build the link to view the folder.
var sLink = '<a href="#" onclick="OpenFolder('' + ProtectPath( folderPath ) + '');return false;"><img alt="" src="images/Folder.gif" width="16" height="16" border="0"> ' ;
var rLink = '<a href="#" title="Rename Folder" onclick="RenameFolder('' + folderName + '');return false;"><img src="images/rename.gif" width="16" height="16" border="0" alt="Rename Folder" title="Rename Folder"></a>' ;
var dLink = '<a href="#" title="Delete Folder" onclick="DeleteFolder('' + folderName + '');return false;"><img src="images/delete.gif" width="16" height="16" border="0" alt="Delete Folder" title="Delete Folder">' ;
var ssLink = rLink + dLink;
return '<tr>' +
'<td width="16"></td><td nowrap> ' +
sLink +
folderName +
'</a></td><td align="right" nowrap>' + ssLink +
'</td></tr>' ;
}
oListManager.GetFileRowHtml = function( fileName, fileUrl, fileSize )
{
var sIcon = oIcons.GetIcon( fileName ) ;
// Build the link to view the file.
var sLink = '<a href="#" onclick="OpenFile('' + ProtectPath( fileUrl ) + '');return false;"><img alt="" src="images/icons/' + sIcon + '.gif" width="16" height="16" border="0"> ' ;
var vLink = '<a href="' + ProtectPath( fileUrl ) + '" target="_blank"" title="View file"><img src="images/view.gif" width="16" height="16" border="0" alt="View File" title="View File"></a>' ;
var rLink = '<a href="#" title="Rename file" onclick="RenameFile('' + fileName + '');return false;"><img src="images/rename.gif" width="16" height="16" border="0" alt="Rename File" title="Rename File"></a>' ;
var dLink = '<a href="#" title="Delete file" onclick="DeleteFile('' + fileName + '');return false;"><img src="images/delete.gif" width="16" height="16" border="0" alt="Delete File" title="Delete File"></a>' ;
// Get the file icon.
var ssLink = vLink + rLink + dLink;
return '<tr>' +
'<td width="16"></td><td> ' +
sLink +
fileName +
'</a>' +
'</td><td align="right" nowrap> ' +
fileSize +
' KB' + ssLink +
'</td></tr>' ;
}
function OpenFolder( folderPath )
{
// Load the resources list for this folder.
window.parent.frames['frmFolders'].LoadFolders( (folderPath) ) ;
}
function OpenFile( fileUrl )
{
window.top.opener.SetUrl( fileUrl.replace( '#', '%23' ) ) ;
window.top.close() ;
window.top.opener.focus() ;
}
function DeleteFolder( folderUrl )
{
if ( !confirm( 'Do you really delete the folder "' + folderUrl + '" ?' ) ) return false;
oConnector.SendCommand( 'DeleteFolder', 'FolderName=' + ( encodeURI(folderUrl) ) , DeleteFolderCallBack ) ;
}
function DeleteFolderCallBack( fckXml )
{
var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;
var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;
var sErrorDescription = String( oNode.attributes.getNamedItem('originalDescription').value ) ;
switch ( iErrorNumber )
{
case 0 :
Refresh() ;
break ;
case 201 :
alert( 'You have no permissions to delete the folder' ) ;
break ;
case 202 :
alert( 'Invalid folder name' + sErrorDescription ) ;
break ;
case 203 :
alert( 'Folder not exists' + sErrorDescription ) ;
break ;
default :
alert( 'Error deleting folder. nError number: ' + iErrorNumber + ' nError description: ' + sErrorDescription ) ;
break ;
}
}
function DeleteFile(fileUrl)
{
if ( !confirm( 'Do you really delete the file "' + fileUrl + '" ?' ) ) return false;
oConnector.SendCommand( 'DeleteFile', 'FileName=' + encodeURI( fileUrl ) , DeleteFileCallBack ) ;
}
function DeleteFileCallBack( fckXml )
{
var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;
var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;
var sErrorDescription = String( oNode.attributes.getNamedItem('originalDescription').value ) ;
switch ( iErrorNumber )
{
case 0 :
Refresh() ;
break ;
case 301 :
alert( 'You have no permissions to delete the file' ) ;
break ;
case 302 :
alert( 'Invalid file name' + sErrorDescription ) ;
break ;
case 303 :
alert( 'File not exists' + sErrorDescription ) ;
break ;
default :
alert( 'Error deleting file. nError number: ' + iErrorNumber + ' nError description: ' + sErrorDescription ) ;
break ;
}
}
function RenameFolder( folderName )
{
var newName = prompt('Please enter the new folder name for "' + folderName + '":', folderName);
if ((newName != null) && (newName != '') && (newName != folderName)) {
oConnector.SendCommand( 'RenameFolder', "FolderName=" + encodeURI(folderName) + "&NewName=" + encodeURI ( newName ), RenameFolderCallBack ) ;
}
}
function RenameFolderCallBack( fckXml )
{
var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;
var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;
var sErrorDescription = String( oNode.attributes.getNamedItem('originalDescription').value ) ;
switch ( iErrorNumber )
{
case 0 :
Refresh() ;
break ;
case 401 :
alert( 'You have no permissions to rename the folder' ) ;
break ;
case 402 :
alert( 'Invalid folder name' + sErrorDescription ) ;
break ;
case 403 :
alert( 'is not Folder' + sErrorDescription ) ;
break ;
case 404 :
alert( 'Folder not exists' + sErrorDescription ) ;
break ;
default :
alert( 'Error renaming folder. nError number: ' + iErrorNumber + ' nError description: ' + sErrorDescription ) ;
break ;
}
}
function RenameFile( fileName )
{
var newName = prompt('Please enter the new file name for "' + fileName + '":', fileName);
if ((newName != null) && (newName != '') && (newName != fileName)) {
oConnector.SendCommand( 'RenameFile', "FileName=" + encodeURI( fileName ) + "&NewName=" + encodeURI( newName ), RenameFileCallBack ) ;
}
}
function RenameFileCallBack( fckXml )
{
var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;
var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;
var sErrorDescription = String( oNode.attributes.getNamedItem('originalDescription').value ) ;
switch ( iErrorNumber )
{
case 0 :
Refresh() ;
break ;
case 501 :
alert( 'You have no permissions to rename the file' ) ;
break ;
case 502 :
alert( 'Invalid file name' + sErrorDescription ) ;
break ;
case 503 :
alert( sErrorDescription + 'is not a file' ) ;
break ;
case 504 :
alert( 'File not exists' + sErrorDescription ) ;
break ;
default :
alert( 'Error renaming file. nError number: ' + ' nError description: ' + sErrorDescription ) ;
break ;
}
}
2。 第二步 找到这个文件 /fckeditoreditorfilemanagerbrowserdefaultfrmfolders.html
将函数OpenFolder(folderPath)最后一句修改为:
代码:
var agent = navigator.userAgent;
if(agent.indexOf('MSIE') != -1 || agent.indexOf('Trident') != -1) {
window.parent.frames['frmResourcesList'].LoadResources( oConnector.ResourceType, (folderPath) ) ;
}else{
window.parent.frames['frmResourcesList'].LoadResources( oConnector.ResourceType, encodeURI(folderPath) ) ;
}
3。第三步,找到fckeditoreditorfilemanagerbrowserdefaultbrowser.html
添加函数:
代码:
function selectBrowser(str) {
var agent = navigator.userAgent;
if(agent.indexOf('Gecko') != -1) {
return encodeURIComponent(str);
}else if(agent.indexOf('MSIE') != -1 || agent.indexOf('Trident') != -1) {
return str;
}else{
return encodeURIComponent(str);
}
}
第79行修改为: oConnector.ConnectorUrl += 'ServerPath=' + selectBrowser( sServerPath ) + '&' ;
第91行修改为: sUrl += '&CurrentFolder=' + selectBrowser( this.CurrentFolder ) ;
4。第四步 再找这个文件 fckeditoreditorfilemanagerconnectorsphpcommands.php
添加:
代码:
header('Content-Type:text/html;charset=UTF-8');
function DeleteFolder( $resourceType, $currentFolder ) {
$sFolderName = $_GET['FolderName'];
$sErrorMsg = '';
$sServerDir = ServerMapFolder( $resourceType, $currentFolder . "/" . $sFolderName ,'DeleteFolder');
/*if(empty($_cookie[xxxxxx])) {
$sErrorNumber = "201"; //permissions
}else */ if(empty($_GET['FolderName']) or (!is_dir($sServerDir))) {
$sErrorNumber = "202"; //Invalid Folder Name.
$sErrorMsg = $sFolderName;
}else if(!file_exists($sServerDir)) {
$sErrorNumber = "203"; // Folder not exists
$sErrorMsg = $sFolderName;
echo $sFolderName;exit();
}else{
if(@rmdir($sServerDir)) {
$sErrorNumber = "0";//success
}else{
$sErrorNumber = "222";
$sErrorMsg = "目录删除失败,原因:1。目录不为空n2。没有权限";
}
}
echo '<Error number="' . $sErrorNumber . '" originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />' ;
}
function DeleteFile( $resourceType, $currentFolder ) {
$sFileName = iconv("utf-8","gbk",$_GET['FileName']);
$sErrorMsg = "";
$sServerDir = ServerMapFolder( $resourceType, $currentFolder . "/" . $sFileName ,'DeleteFile');
/*if(empty($_COOKIE['hazysuser'])) {
$sErrorNumber = "301"; //Security Error.
}else*/ if( empty($_GET['FileName']) or (!is_file($sServerDir))) {
$sErrorNumber = "302"; //Invalid File Name.
$sErrorMsg = $sFileName;
}else if(!file_exists($sServerDir)) {
$sErrorNumber = "303"; //File not exists.
$sErrorMsg = $sFileName;
}else{
if(@unlink($sServerDir)) {
$sErrorNumber = "0";
}else{
$sErrorNumber = "333";
$sErrorMsg = "无法删除此文件,原因:n1。没有权限。n2。必须在DOS下才能删除的特殊文件";
}
}
echo '<Error number="' . $sErrorNumber . '" originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />';
}
function RenameFolder( $resourceType, $currentFolder ) {
$sErrorMsg = '';
$sFolderName = urldecode(mb_convert_encoding($_GET['FolderName'],"gbk","utf-8"));
$sNewName = urldecode(mb_convert_encoding($_GET['NewName'],"gbk","utf-8"));
$sServerDir = ServerMapFolder( $resourceType, $currentFolder . "/" . $sFolderName ,'RenameFolder');
$sNewDir = ServerMapFolder( $resourceType, $currentFolder . "/" . $sNewName ,'RenameFolder' );
/*if( empty($_COOKIE[xxxxxx])) {
$sErrorNumber = "401";
}else */if ( empty($_GET['FolderName']) or empty($_GET['NewName']) ) {
$sErrorNumber = "402";//Invalid Folder Name.
$sErrorMsg = $sFolderName .' != '.$sNewName;
/*}else if (!is_dir($sServerDir)) {
$sErrorNumber = "403"; //is not Folder
$sErrorMsg = $sFolderName.' is not Folder';
}else if (!file_exists($sServerDir)) {
$sErrorNumber = "404"; //Folder not exists.
$sErrorMsg = $sFolderName;*/
}else {
if(rename($sServerDir,$sNewDir,stream_context_create() )) {
$sErrorNumber = "0";
}else{
$sErrorNumber = "444";
$sErrorMsg = "无法修改目录名称:".$sFolderName.'为'.$sNewName.'。';
}
}
echo '<Error number="' . $sErrorNumber . '" originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />';
}
function RenameFile( $resourceType, $currentFolder ) {
$sFileName = iconv("utf-8","gbk",$_GET['FileName']);
$sNewName = iconv("utf-8","gbk",$_GET['NewName']);
$sErrorMsg = '';
$sServerDir = ServerMapFolder( $resourceType, $currentFolder . "/" . $sFileName ,'RenameFile');
$sNewDir = ServerMapFolder( $resourceType, $currentFolder . "/" . $sNewName ,'RenameFile');
/*if(empty($_COOKIE[xxxxxx])) {
$sErrorNumber = "501";
}else */if( empty($_GET['FileName']) or empty($_GET['NewName']) ) {
$sErrorNumber = "502";
}else if(!is_file($sServerDir)) {
$sErrorNumber = '503';
$sErrorMsg = $sFileName .' is not a file';
}else if(!file_exists($sServerDir)) {
$sErrorNumber = '504';
$sErrorMsg = $sFileName .' is not exists';
}else{
if(rename($sServerDir,$sNewDir)) {
$sErrorNumber = "0";
}else{
$sErrorNumber = "555";
$sErrorMsg = "无法重命名此文件:".$sServerDir;
}
}
echo '<Error number="' . $sErrorNumber . '" originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />';
}
修改function GetFoldersAndFiles( $resourceType, $currentFolder )函数,并添加以下内容:
代码:
$agent = $_SERVER['HTTP_USER_AGENT'];
if(stripos($agent,"gecko")>0) {
$currentFolder = urldecode($currentFolder);
}
if(stripos($agent,"gecko")>0) {
$sServerDir = iconv("utf-8","gbk",$sServerDir);
}
5。第五步 fckeditoreditorfilemanagerconnectorsphpconfig.php
第28行修改为:$Config['ConfigAllowedCommands'] = array('QuickUpload', 'FileUpload', 'GetFolders', 'GetFoldersAndFiles', 'CreateFolder','DeleteFolder','DeleteFile','RenameFolder','RenameFile') ;
6。第六步 fckeditoreditorfilemanagerconnectorsphpconnector.php
在相应地方添加以下代码:
代码:
case "DeleteFolder":
DeleteFolder( $sResourceType, $sCurrentFolder );
break ;
case "DeleteFile":
DeleteFile( $sResourceType, $sCurrentFolder );
break ;
case "RenameFolder":
RenameFolder( $sResourceType, $sCurrentFolder );
break ;
case "RenameFile":
RenameFile( $sResourceType, $sCurrentFolder );
break ;
7。第七步 fckeditoreditorfilemanagerconnectorsphpio.php
第70行函数function CreateServerFolder( $folderPath, $lastFolder = null )里添加:
$folderPath = iconv("utf-8","gbk",$folderPath);
8。第八步 fckeditoreditorfilemanagerconnectorsphputil.php
第50行修改为:
return (mb_convert_encoding(htmlspecialchars($value),"UTF-8","GBK")) ;
上面的为完全版,但要自己动手。在 http://www.uushare.com/user/littlenew/file/1942702里有免费版,不过里面某些代码已经加密,请勿破解,保证不含任何恶意代码,也不会有反向连接等一系列其它联网活动。
[url= http://www.hazytime.cn/article/article.asp?/6370-1-1.html]也可以到我的网站查看[/url]。
1。我的IE8在apache下不能浏览中文目录里的图片,怎么办?
在IE8的设置里选中:发送 UTF-8 URL
2。免费版本已经存在的问题:在firefox不能修改、删除文件,只能上传文件.
测试环境:windows 2003 + apache 2.2.11 + PHP5.3 + UTF-8(不带BOM)
相关文章
- 最近做了个扫描二维码得到vcard的项目,遇到一个问题,有一部分生成完的二维码,用android系统手机扫描后得到的vcard中的中文姓名是乱码,经过比对发现,这部分vcard中ORG这个...2016-11-25
js URLdecode()与urlencode方法支持中文解码
下面来介绍在js中来利用urlencode对中文编码与接受到数据后利用URLdecode()对编码进行解码,有需要学习的机友可参考参考。 代码如下 复制代码 ...2016-09-20php 中file_get_contents超时问题的解决方法
file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25- 相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
- 今天在写一个vbs的时候,发现中文乱码,后来写好代码正常运行的代码压缩一下给了同事,发现报无效字符,经过验证后发现原来是编码的问题导致,这里就为大家分享一下...2020-06-30
安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法
手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21- 最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
连接MySql速度慢的解决方法(skip-name-resolve)
最近在Linux服务器上安装MySql5后,本地使用客户端连MySql速度超慢,本地程序连接也超慢。 解决方法:在配置文件my.cnf的[mysqld]下加入skip-name-resolve。原因是默认安装的MySql开启了DNS的反向解析。如果禁用的话就不能...2015-10-21关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)
最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅。首先:用show variables like “%colla%”;show varables like “%char%”;这两条...2015-11-24- 这篇文章主要介绍了C#读取中文文件出现乱码的解决方法,涉及C#中文编码的操作技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
- 在debian环境下,彻底解决mysql无法插入和显示中文的问题Linux下Mysql插入中文显示乱码解决方案mysql -uroot -p 回车输入密码进入mysql查看状态如下:默认的是客户端和服务器都用了latin1,所以会乱码。解决方案:mysql>use...2013-10-04
总结android studio注意事项及打不开等问题解决方法
经过一段时间的使用,总结了android studio打不开等问题的6种解决方法及android studio注意事项,希望对大家有所帮助。 1 首次运行,建立好项目需要下载一些东西,如果...2016-09-20- 我们自己鼓捣mysql时,总免不了会遇到这个问题:插入中文字符出现乱码,虽然这是运维先给配好的环境,但是在自己机子上玩的时候咧,总得知道个一二吧,不然以后如何优雅的吹牛B。...2015-03-15
- 一.mysql默认不支持中文,它的server和db默认是latin1编码.所以我们要将其改变为utf-8编码,因为utf-8包含了地球上大部分语言的二进制编码 1.关闭mysql服务 sudo /etc/init.d/mysql stop 2.修改mysql配置文件 mysql配...2015-10-21
- 小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
- 在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式。<?php$arr = array ( 'Name'=>'希亚', 'Age'...2015-11-08
MySQL ERROR 2013 (HY000)错误解决方法
当通过 TCP/IP 连接 MySQL 远程主机时,出现 ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 104 。如果是在linux shell命令行中直接打 mysql 命令,...2015-03-15IE6-IE9中tbody的innerHTML不能赋值的解决方法
IE6-IE9中tbody的innerHTML不能赋值,重现代码如下 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>IE6-IE9中tbody的innerHTML不能复制bug</title> </head> <body style="height:3...2014-06-07- centos6.2,停止mysqld然后修改/etc/my.cnf datadir的位置,启动mysqld提示FAILED,查看日志 复制代码 代码如下: 120609 11:31:31 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 120609 11:35:12 my...2015-03-15
Photoshop提示“此产品的许可证已过期"及“无法开始您的Adobe Photoshop CS5.1 订阅”解决方法
首先不要鄙视我用Photoshop盗版,实在是贵。现在我们来看看如果你的Photoshop提示“此产品的许可证已过期",还有“无法开始您的Adobe Photoshop CS5.1 订阅”如何解决吧...2016-09-14