使用PHP将8位字符数组存储为SQL中的字符串

时间:2014-03-19 21:12:41

标签: javascript php sql arrays string

这应该很简单,但我最难让它正常工作。

我有一个8位整数数组,它们是255色调的索引。我想将它们作为字符串存储在SQL中,然后将它们读回并显示图像。

我将它们转换为javascript中的字符串,如下所示:

var playerString = "";
// for all the pixels in my image
    // integerVariable is the palette index for this pixel, from 0 to 255
    var chr = String.fromCharCode( integerVariable );
    playerString += chr;
return playerString;

在php中,我将它们存储到TEXT字段中。

我后来从SQL中读回了字段,并尝试将它们转换回8位整数:

var pixelString = "<?php echo $pixelData; ?>";
var pixelStringLength = pixelString.length;
for( var pixelI = 0; pixelI < pixelStringLength; pixelI++ )
{
    var colorIndex = pixelString.charCodeAt(pixelI)
    // assign colorIndex to the correct pixel
}

问题是我从SQL获取的字符串与我输入的字符串不同。实际上,当我查看SQL表时,我存储的字符串不正确。

字符串:

(((!!(Ú!!!ÚÚ!!Ú(Ú!!(ÚXXX!!!(ÚX$$!!!(GÚXï$$!!!(GÚXXXGÚXXXÚÚGGGGÚ$Ú$$$ÚÚÚ$

已成为:

������(((�����������!!(�����������!!!������������!!�(�����������!!(��XXX������!!!(��X$$���!!!(G�X�$$!!!(G�XXXG�XXX�����������������������GGGG�����������$������������$$$�������������$������������

我已尝试在字符串中使用htmlspecialchars,然后将其放入SQL中,并在读取字符串后使用htmlspecialchars_decode后再无效。该字符串在SQL中看起来相同,并以相同的方式出现。

在字符串上使用htmlspecialchars会在PHP中引发错误,该字符串包含无效字符。我尝试使用ENT_SUBSTITUTE标志,但这没有帮助。无论哪种方式,据我所知,字符串不应该有任何无效字符,因为我的调色板的所有索引都在0到252之间。

有人有什么想法吗?这似乎应该很简单。

0 个答案:

没有答案