这应该很简单,但我最难让它正常工作。
我有一个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之间。
有人有什么想法吗?这似乎应该很简单。