- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
好的,我必须导出 REG_BINARY 值并将它们存储在 SQL 中,稍后我需要将这些值转换为字符串..
我有什么:
在 c# 中,我将 REG_BINARY 读取为 Byte[] 数据类型,例如:
RegistryKey rk = Registry.CurrentUser.OpenSubKey...
byte[] value = rk.GetValue("TheKey")
然后我使用以下方法将它存储到 SQL VarBinary 字段中:
private void SqlStorePstFileInfo(List<PersonalFolderObject> listOfPstObjects, int? userComputerId)
{
using (var sqlConnection = new SqlConnection(GetConnectionString()))
{
sqlConnection.Open();
foreach (PersonalFolderObject pfo in listOfPstObjects)
{
string s = "INSERT INTO [InvPstFile] (UserComputerId, Name, Path, Size, OldRegBinary) VALUES(@UserComputerId, @Name, @Path, @Size, @OldRegBinary)";
using (SqlCommand sqlCmd = new SqlCommand(s, sqlConnection))
{
SqlParameter pUserComputerId = sqlCmd.Parameters.Add("@UserComputerId", SqlDbType.Int);
pUserComputerId.Value = userComputerId;
SqlParameter pName = sqlCmd.Parameters.Add("@Name", SqlDbType.NVarChar);
pName.Value = pfo.Name;
SqlParameter pPath = sqlCmd.Parameters.Add("@Path", SqlDbType.NVarChar);
pPath.Value = pfo.OldPath;
SqlParameter pSize = sqlCmd.Parameters.Add("@Size", SqlDbType.Int);
pSize.Value = pfo.Size;
SqlParameter pOldRegBinary = sqlCmd.Parameters.Add("@OldRegBinary", SqlDbType.VarBinary);
pOldRegBinary.Value = pfo.OldRegBinary;
sqlCmd.ExecuteNonQuery();
}
//string s = string.Format("INSERT INTO [InvPstFile] (UserComputerId, Name, Path, Size) " +
// "VALUES ('{0}','{1}','{2}','{3}')",
// userComputerId, pfo.Name, pfo.OldPath, pfo.Size);
//Helpers.Logging.Log.Info(string.Format("SQL: {0}", s));
//var sqlCmd = new SqlCommand(s, sqlConnection);
//sqlCmd.ExecuteNonQuery();
}
sqlConnection.Close();
}
}
当我使用 SQL Management Studio 读取存储值时:
select oldregbinary from InvPstFile where PersonalFolderId = 73
我得到:
0x0000000038A1BB1005E5101AA1BB08002B2A56C200006D737073742E646C6C00000000004E495441F9BFB80100AA0037D96E0000000043003A005C00550073006500720073005C00630068007200690073007400690061006E002E006D007500670067006C0069005C0044006F00630075006D0065006E00740073005C004F00750074006C006F006F006B002000460069006C00650073005C006F006E0065006D006F0072006500730061006D0070006C0065002E007000730074000000
当我尝试使用 CAST(AboveString as VARCHAR(max)) 将其转换为字符串时,我没有得到任何结果(显示)。原因是unicode编码。当我替换/删除所有 00 时,我得到:
0x38A1BB15E5101AA1BB082B2A56C26D737073742E646C6C4E495441F9BFB801AA37D96E433A5C55736572735C63687269737469616E2E6D7567676C695C446F63756D656E74735C4F75746C6F6F6B2046696C65735C6F6E656D6F726573616D706C652E707374
当我将该值转换为 VARCHAR(MAX) 时,我得到:8¡»å¡»+*VÂmspst.dllNITAù¿ª7ÙnC:\Users\MYREMOVEPROFILENAME\Documents\Outlook Files\onemoresample.pst
那么,有什么想法可以将 unicode 编码值转换/转换为字符串吗?
(我知道您可以解码上面的字符串以找到替换的 MYREMOVEPROFILENAME - 这不值得付出努力;))
最佳答案
您应该在特定的 unicode Text.Encoding
上使用 GetString()
方法将其转换回字符串。将列从阅读器转换为 byte[]
,然后使用 GetString()
将其转换为字符串。
string value;
using (SqlCommand command = new SqlCommand("select * from InvPstFile", sqlConnection))
{
SqlDataReader sdr = command.ExecuteReader();
//Assuming we are just reading 1 row here
sdr.Read();
var bytes = (byte[])sdr["OldRegBinary"];
// Based on the original unicode format one of the following should
// give you the string value
value = System.Text.Encoding.UTF8.GetString(bytes);
value = System.Text.Encoding.Unicode.GetString(bytes);
value = System.Text.Encoding.Default.GetString(bytes);
}
关于c# - SQL将unicode编码的varbinary转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17074859/
我对自定义 CSS 或在将图像作为 Logo 上传到页面时使用编码 block 有疑问。我正在为我的网站使用 squarespace,我需要帮助编码我的 Logo 以使其适合每个页面。一个选项是使用自
如 encoding/json 包文档中所述, Marshal traverses the value v recursively. If an encountered value implement
我必须做一些相当于Java中的iconv -f utf8 -t sjisMS $INPUT_FILE的事情。该命令在 Unix 中 我在java中没有找到任何带有sjisMS的编码。 Java中有Sh
从 PHP 5.3 迁移到 PHP 5.6 后,我遇到了编码问题。我的 MySQL 数据库是 latin1,我的 PHP 文件是 windows-1251。现在一切都显示为“ñëåäíèòå àäðå
我有一个 RScript文件(我们称之为 main.r ),它引用了另一个文件,使用以下代码: source("functions.R") 但是,当我运行 RScript 文件时,它提示以下错误:
我无法设法从 WSDL 创建 RPC/编码风格的代码 - 有谁知道哪个框架可以做到这一点? 带有 adb 和 xmlbeans 映射的 Axis2 无法正常工作(无法处理响应中的肥皂编码)直接使用 X
安装了最新版本的Node.Js()和npm包**(1.2.10)**当我运行 Express 命令来生成项目时,它向我抛出以下错误 buffer.js:240 switch (encoding &
JavaScript中有JSON编码/解码base64编码/解码函数吗? 最佳答案 是的,btoa() 和 atob() 在某些浏览器中可以工作: var enc = btoa("this is so
>>> unicode('восстановление информации', 'utf-16') Traceback (most recent call last): File "", line
我当然熟悉 java.net.URLEncoder 和 java.net.URLDecoder 类。但是,我只需要 HTML 样式的编码。 (我不想将 ' ' 替换为 '+' 等)。我不知道任何只做
有一个非常简单的 SSIS 包: OLE DB Source 通过 View 获取数据(数据库表 nvarchar 或 nchar 中的所有字符串列)。 派生列,用于格式化现有日期并将其添加到数据集(
我正在使用一个在 Node 中进行base64编码的软件,如下所示: const enc = new Buffer('test', 'base64') console.log(enc) 显示: 我正
我试图将带有日语字符的数据插入到 oracle 数据库中。事情是保存在数据库中的是一堆倒置的问号。我该如何解决这个问题 最佳答案 见 http://www.errcode.net/blogs/?p=6
当我在 java 中解压 zip 文件时,我发现文件名中出现了带有重音字符的奇怪行为。 西索: Add File user : L'equipe Technique -- Folder : spec
在网上冲浪我找到了 ExtJS 的 Ext.Gantt 插件,该扩展有一个特殊的编码。任何人都知道如何编码那样或其他复杂的形式。 Encoded Gantt Chart 最佳答案 它似乎被 Dean
我正在用C语言做一个编码任务,我进展顺利,直到读取符号并根据表格分配相应的代码的部分。我必须连接几个代码,直到它们的长度达到 32 位,为此我必须将它们写入一个文件中。这种写入文件的方法给我带来了很多
我有一个外部链接的 javascript 文件。在那个 javascript 里面,我有这个功能: function getMonthNumber(monthName){ monthName = mo
使用mechanize,我检索到一个网页的源页面,其中包含一些非ASCII字符,比如汉字。 代码如下: #using python2.6 from mechanize import Browser b
我有一个包含字母 ø 的文件。当我用这段代码 File.ReadLines(filePath) 读取它时,我得到了一个问号而不是它。 当我像这样添加编码时 File.ReadLines(filePat
如何翻译下面的字符串 H.P. Dembinski, B. K\'{e}gl, I.C. Mari\c{s}, M. Roth, D. Veberi\v{c} 进入 H. P. Dembinski,
我是一名优秀的程序员,十分优秀!