PHP - 如何使用数据库中的特殊字符序列化数据?

时间:2015-05-25 22:02:08

标签: php database serialization

我有一个包含特殊字符的字符串,例如:

## compute a key frame: one line per machine/test
pairs <- unique(df[,c('Name','Test')]);

## precompute ticks
xtick <- seq(seq(min(df$Test_Date),by='-1 month',len=2)[2],seq(max(df$Test_Date),by='1 month',len=2)[2],'month');
yspace <- 1/(nrow(pairs)+1);
pairs$ytick <- seq(yspace,1-yspace,len=nrow(pairs));

## precompute point colors using named character vector
pointColor <- c(No='red',Yes='blue');

## draw the plot
par(mar=c(6,6,3,3)+0.1,xaxs='i',yaxs='i'); ## set global plot params
plot(NA,xlim=c(min(xtick),max(xtick)),ylim=c(0,1),axes=F,xlab='',ylab=''); ## define plot bounds
with(merge(df,pairs),points(Test_Date,ytick,col=pointColor[issue],pch=4,cex=1)); ## plot points
axis(1,xtick,strftime(xtick,'%Y-%m'),las=2); ## x-axis
axis(2,c(0,pairs$ytick,1),NA,tcl=0); ## y-axis (full extent, no tick marks)
axis(2,pairs$ytick,paste0(pairs$Name,':',pairs$Test),las=1); ## y-axis (just labels and tick marks on main lines)
title('Machine Test Coverage'); ## title

当我使用序列化($ text)时,返回

$text = "NÃO";

但是当我使用从数据库中获取的字符串时,例如:

a:1:{i:0;s:4:"NÃO";}

返回

$query = SELECT special_text FROM ...
(...)
$text = $row->"special_text"
serialize($text);

,是什么让我的剧本崩溃。

从数据库序列化数据时我需要做什么? 谢谢,对不起我的英文

1 个答案:

答案 0 :(得分:0)

如果您不想使用utf-8,请尝试对序列化字符串进行编码,然后再将其保存到db,并在检索后进行解码。您可以使用base64编码,就像在数据库中使用任何8位编码一样。此方法将数据大小增加4/3。或者您可以在数据库中使用二进制(BLOB)字段,并使用gzip或类似的方式对数据进行编码。对于大量文本非常有用,但会增加CPU负载。