如何在C#中从VFP filetostr()字符串生成图片文件及编码疑问
VFP
filetostr() 编码说明及C#还原图片方案 一、filetostr() 的编码与C#对应类型
- VFP的
filetostr()函数没有做真正的编码转换,它只是把文件的原始字节逐个映射为单字节字符,存储为VFP字符串。这个映射基于VFP默认的OEM编码:英文环境通常是Windows-1252(CP1252),中文环境则是GB2312(CP936)。 - 在C#中,读取到的内容就是普通的
string类型,但要注意:该字符串里每个字符的Unicode值等于原始图片字节的数值,不能用UTF系列编码直接转字节,必须用和VFP一致的单字节编码来还原。
二、C#读取字符串生成图片的实现
核心逻辑是把字符串通过对应编码转回原始字节数组,再写入文件。
代码示例
using System.IO; using System.Text; // 假设已从SQL Server读取到目标字符串 string imageString = "从数据库获取的filetostr转换后的字符串"; // 根据VFP环境选择编码:中文环境用936(GB2312),英文环境用1252(Windows-1252) Encoding vfpEncoding = Encoding.GetEncoding(1252); // 将字符串转回原始字节数组 byte[] imageBytes = vfpEncoding.GetBytes(imageString); // 写入文件生成图片 File.WriteAllBytes(@"D:\saved_image.png", imageBytes);
关键注意点
- 编码必须匹配:如果你的VFP是中文系统,一定要替换为
Encoding.GetEncoding(936),否则会因字节错误导致图片损坏。 - 字段长度要足够:图片转成字符串后体积和原文件一致(单字节对应单字符),需用
varchar(max)或text这类大字段存储,避免截断。
内容的提问来源于stack exchange,提问作者TopStop
相关产品推荐
相关产品推荐

