小编Ray*_*ddy的帖子

从oracle varchar2显示字符串的十六进制值?

我们遇到的问题是文本以某种不同的方式编码,但保存在表格的单个列中.很长的故事.在MySQL上,我可以"从表中选择十六进制(str)",然后我看到字符串的字节与我设置它们完全相同.

在Oracle上,我有一个以土耳其字符İ开头的字符串,它是Unicode字符0x0130"带有上面点的拉丁文大写字母".这是我的Unicode 2.0版书的印刷版.在UTF-8中,该字符为0xc4b0.

我们需要支持非常旧的客户端应用程序.他们会在"windows-1254"中将此文本发送给我们.我们过去只是闭上眼睛,存放它,然后再将其交还.现在我们需要Unicode,或者被赋予Unicode.

所以我有:

SQL> select id, name from table where that thing;

ID     NAME
------ ------------------------
746    Ý
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为"İ"在Windows-1254中是0xdd而wondows-1252中的0xdd是"Ý".我的终端大概设置为通常的windows-1252.

但:

SQL> select id, rawtohex(name) from table where that thing;

ID     RAWTOHEX(NAME)
------ ------------------------
746    C39D
Run Code Online (Sandbox Code Playgroud)

似乎没有相当于MySQL中的hex(name)函数.但我必须遗漏一些东西.我在这里错过了什么?

我的java代码必须使用我提供的utf8并保存utf8副本和windows-1252副本.java代码给了我:

bytes (utf8):  c4 b0
bytes (1254):  dd
Run Code Online (Sandbox Code Playgroud)

然而,当我保存它时,客户端没有得到正确的字符.当我试图查看Oracle实际存储的内容时,我会看到上面看到的垃圾.我知道C39D的来源.有什么建议?

我们在所有应用程序中都内置了ojdbc14.jar,并且我们正在连接到一个数据库,该数据库表示它是"Oracle Database 11g企业版版本11.2.0.2.0 - 64位生产".

oracle unicode turkish utf-8 ojdbc

13
推荐指数
2
解决办法
8万
查看次数

如何在oracle中将原始字节值放入varchar2列?

我们有一个旧客户端与旧版服务器应用程序通信.在土耳其,它发送文本为windows-1254.我们存储它并将其发回.

数据库中的一行名称为"İ",这是一个大写字母,顶部有一个点.在windows-1254中,这是一个0xdd字符,在UTF-8中,即0xc4b0.

如果我查看数据库,我会看到:

SQL> select dump(name, 16) from thing where other thing;

DUMP(NAME,16)
--------------------------------------------------------------------------------
Typ=1 Len=2: c3,9d
Run Code Online (Sandbox Code Playgroud)

奇怪的.正如有人在另一个问题中指出的那样......

windows-1254中的"İ"字符为0xdd.事实证明,windows-1252中的0xdd是"Ý"字符,在UTF-8中为0xc39d.因此,我们看到倾销.

我们认为我们想做的是这个,但它显然不起作用:

SQL> update thing set name = UTL_RAW.CAST_TO_VARCHAR2(UTL_RAW.CONVERT(HEXTORAW('dd'), 'CP1254', 'UTF8')) where otherthing;
update thing set name = UTL_RAW.CAST_TO_VARCHAR2(UTL_RAW.CONVERT(HEXTORAW('dd'), 'CP1254', 'UTF8')) where otherthing
                                                        *
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "SYS.UTL_RAW", line 327
Run Code Online (Sandbox Code Playgroud)

咦?

很多文档讨论了UTL_RAW.CONVERT,没有人展示它实际使用的一个例子.这是为什么?是否有允许的NLS字符集名称列表?我找不到一个.有什么建议?我可以找到java知道的所有编码列表,但我找不到Oracle的这个列表.

我有一个java应用程序,我用来编写必须由传统软件读取的数据.该应用程序收到UTF-8.我可以成功地将其转换为Windows-1254字节.我可以将它们翻译成windows-1252.如果我然后将它们翻译成UTF-8,我可以用以下内容将其写入数据库:

SQL> update this set name = UTL_RAW.CAST_TO_VARCHAR2(hextoraw('c39d')) where otherthing;

1 row updated.

SQL> select dump(name, 16) …
Run Code Online (Sandbox Code Playgroud)

java oracle turkish encoding utf-8

5
推荐指数
1
解决办法
2615
查看次数

Android lint 忽略我的 lint.xml,跳过我试图启用的检查

我正在尝试使用 Android lint 检查有关我的项目的一些内容。它似乎忽略了我提供的 lint.xml 文件,使我无法启用检查。

我在 Ubuntu 14.04 上使用 Android Studio,但我只是从命令行调用 ~/Android/Sdk/tools/lint。

我在做:

 $ lint --config GF/lint.xml --html lintCheck.html GF   
 Scanning 7.5.0: .
 Scanning 7.5.0 (Phase 2): 
 ... (and so on) ...
 Wrote HTML report to file:/home/ray/Projects/jj/lintCheck.html
 Lint found 26 errors and 198 warnings
 $ 
Run Code Online (Sandbox Code Playgroud)

该报告列出了所有未启用的检查。这是我创建的 GF/lint.xml 文件:

 $ cat GF/lint.xml 
 <?xml version="1.0" encoding="UTF-8"?>
 <lint>
     <issue id="HardcodedText" severity="error" />
 </lint>
 $
Run Code Online (Sandbox Code Playgroud)

以下是我尝试调用 lint 的方法。在所有这些情况下,所有检查都说明如下:

 RelativeOverlap
 Disabled By: Project lint.xml file
Run Code Online (Sandbox Code Playgroud)

那么,它所指的项目 lint.xml 文件在哪里?我已经在 ~/Android 和我所有的项目中搜索过,这个文件没有出现在其他任何地方。

相对重叠禁用者:项目 lint.xml 文件

我尝试过的: …

android lint

4
推荐指数
1
解决办法
2300
查看次数

java正则表达式到底是什么?我是否误解了正则表达式文档的完整性?

System.out.println("a".matches("^[A-Za-z]+"));
System.out.println("a ".matches("^[A-Za-z]+"));
Run Code Online (Sandbox Code Playgroud)

这给了我:

true
false
Run Code Online (Sandbox Code Playgroud)

到底是什么?据我所知,"[A-Za-z]"包含"a","+"表示一个或多个,所以这似乎可以起作用,至少在这个宇宙中......

细节是:

Mac OS X 10.8.4

$ java -version
java version "1.6.0_51"
Java(TM) SE Runtime Environment (build 1.6.0_51-b11-457-11M4509)
Java HotSpot(TM) 64-Bit Server VM (build 20.51-b01-457, mixed mode)
Run Code Online (Sandbox Code Playgroud)

也许我写的perl太长了,java的正则表达式系统有点像但不是吗?不知道.

java regex

3
推荐指数
1
解决办法
92
查看次数

选项卡上的split()可能不会在每个选项卡上分割

我有一行文件:

 $ od -c testData.txt 
 0000000    6   7   7   7   1   0  \t   0  \t   1  \t   L   P   A   Y  \t
 0000020    F   6   3   5   P   3   B  \t   L   P   A   Y   0   0   0   0
 0000040    1  \t   F   R   M  \t   H   O   U   S   T   O   N       G   R
 0000060    O   U   P       (   a   k   a       C   O   R   P   O   R   A
 0000100    T   E       A   D   V   O   C   A   T …
Run Code Online (Sandbox Code Playgroud)

perl

0
推荐指数
1
解决办法
129
查看次数

标签 统计

java ×2

oracle ×2

turkish ×2

utf-8 ×2

android ×1

encoding ×1

lint ×1

ojdbc ×1

perl ×1

regex ×1

unicode ×1