下面是小编整理的有关mount时的中文问题Unix系统,本文共9篇,欢迎阅读分享,希望对大家有所帮助。

篇1:有关mount时的中文问题Unix系统
见[url]blog.huangdong.com/comments.php?id=31_0_1_0_C[/url] 以前在FreeBSD的ports中出现过一个东东叫gbfs,提供了msdos和cdfs的gb支持,我很喜欢用它,在FreeBSD5.x中为ntfs、smbfs以及msdosfs和cd9660都提供了-C、-L等参数。使用这些参数可以指定
见[url]blog.huangdong.com/comments.php?id=31_0_1_0_C[/url]
以前在FreeBSD的ports中出现过一个东东叫gbfs,提供了msdos和cdfs的gb支持。我很喜欢用它,在FreeBSD 5.x中为ntfs、smbfs以及msdosfs和cd9660都提供了-C、-L等参数。使用这些参数可以指定fs的字符集。这次装的是4.9,本想接着装gbfs,却发现4.9中也开始提供mount时字符集指定的参数了。
MORE...
首先来看看mount_msdos:
-L locale
Specify locale name used for internal uppercase and lowercase conversions for DOS and Win'95 names. By default ISO 8859-1 assumed as local character set.
再来看看mount_smbfs:
-L locale
Use locale for lower/upper case conversion routines. Set the locale for case conversion. By default, mount_smbfs tries to use an environment variable LC_* to determine it.
另,在mount_cd9660、mount_ntfs中还没有直接mount时中文支持的参数。 :(
写到fstab中的方法如下:
/dev/ad0s5 /mnt/win msdos rw,-L=zh_CN.GBK,noauto 0 0
statue 回复于:-02-02 17:26:12mount_msdosfs -L zh_CN.GBK /dev/ad0s1 /mnt/disk
mount_cd9660 -C gbk /dev/acd0 /cdrom
mount_ntfs -C gbk /dev/ad0s1 /mnt/win
hdcola 回复于:2004-02-02 22:45:40[quote:6e578f024e=“statue”]mount_msdosfs -L zh_CN.GBK /dev/ad0s1 /mnt/disk
mount_cd9660 -C gbk /dev/acd0 /cdrom
mount_ntfs -C gbk /dev/ad0s1 /mnt/win[/quote:6e578f024e]
这些是在5.x下的用法,以前有人讲过,但是在4.x下不同的,所以我才写了这个文章,
root@/mnt$mount_ntfs -C gbk /dev/ad1s1 /mnt/bigdata/
mount_ntfs: illegal option -- C
usage: mount_ntfs [-a] [-i] [-u user] [-g group] [-m mask] [-W u2wtable] bdev dir
为什么要写for 4.x的呢?因为它必竟是stable的产品,我喜欢稳定,小白的一般不当。 :m01: :m01: :m01:
statue 回复于:2004-02-03 04:59:13]注意到你是在f 4-STABLE, 我想在 4.9.1 出砬, MFC 吧....
其 5-CURRENT 比^不的只有 ata 和 acpi, F在已很少踩到地雷了 ...
hdcola 回复于:2004-02-03 14:22:48呵呵,我也在等5走向stable,但是做为一个非测试的环境走current还是感觉不好的。我可不想天天去考虑大家的机器上是不是会出问题,而且还不好支持。 :)
kiori 回复于:2004-04-13 12:56:39statue 写到:
mount_msdosfs -L zh_CN.GBK /dev/ad0s1 /mnt/disk
mount_cd9660 -C gbk /dev/acd0 /cdrom
mount_ntfs -C gbk /dev/ad0s1 /mnt/win[/quote]
我安装大是FreeBSD5.1怎么提示是:
# mount_msdosfs -L zh_CN.GBK /dev/ad0s5 /mnt
mount_msdosfs: zh_CN.GBK: No such file or directory
请问我哪里作大不对?
tufeijoe 回复于:2004-08-23 23:38:29那4.xstable下面且不是没有办法看ntfs分区上的中文了阿
怎么办?好象以前有什么方法的阿
原文转自:www.ltesting.net
篇2:informix支持中文问题!Windows系统
Online在5版本时可以存储任何字符串,包括所有中文字符串与英文字符串,不加任何限制,不需安装其它附加产品,不必设置其它环境变量, Online在7.2版以前遵从X/Open的NLS(NativeLanguageSupport)的标准支持中文( XP G3规范),不必安装附加语言支持产品。这是
Online在5版本时可以存储任何字符串,包括所有中文字符串与英文字符串,不加任何限制,不需安装其它附加产品,不必设置其它环境变量。
Online在7.2版以前遵从X/Open的NLS(Native Language Support)的标准支持中文(XPG3规范),不必安装附加语言支持产品。这是一种单字节的支持方式,前提是操作系统也要支持NLS,换句话说,Online是基于操作系统支持中文的。一般设置操作系统环境变量LANG之后,重新启动Online后,原来的数据库即可处理中文,有时也要设DBNLS环境变量。不同的操作系统的LANG的设置方法一般不同,下面列出HP和SCO上的设法:
SCO UNIX:export LANG = english_us.8859
HP-UX: export LANG = en_US.iso88591
ONLINE在7.2以上版本采用GLS(Global Language Support)的方式支持中文,GLS是基于X/Open的XPG4规范之上开发的,这是一种多字节的全球语言支持方式。在安装完Online之后,必须正确安装Informix - Language Supplement ZHCN产品,并设置适当的环境变量,然后启动ONLINE,重新建立数据库,才可处理汉字。方法如下:
1)按照INFORMIX产品安装方法,最后安装Informix Language Supplement ZHCN。
2)一般设置下面三个环境变量:
export DB_LOCALE=zh_CN.gb
export CLIENT_LOCALE=zh_CN.gb
export SERVER_LOCALE=zh_CN.gb
除了这三个环境变量之外,DBLANG=en_us.8859-1可以指定Informix产品内部使用英文。
3)正常启动ONLINE。
4)重新建立数据库
这篇文章为本人收集,原作为大梦,写的很细,应该设为精华!
希望对大家有点帮助!
CNL 回复于:2004-09-28 10:11:43收下先,谢谢!
jiupima 回复于:2004-09-28 10:18:05本技术说明使用的术语和首字母缩略词包括:
GLS
全球语言支持(Global Language Support)。
语言环境(Locale)
语言、地域和代码集
本地化(Localize)
使软件用于特定的语言环境
国际化(Internationalize)
使软件用于任何语言环境
UDR
用户定义的例程
简介
国际化的用户定义的例程(UDR)无需修改和重新编译源代码即可支持不同的语言和文化约定。
Informix GLS 库是一个 API,它让 UDR 处理单字节和多字节字符并管理日期、时间和数值的不同数据格式。GLS 函数可以在运行时访问特定于语言环境的信息,因而 UDR 无需知道客户机的语言环境,就可以让客户机采取正确的行为。
本技术说明突出说明了实现国际化的 UDR 时要考虑的问题,并指出了您可能要为特定语言额外提供的支持。
GLS 概述与定义
全球语言支持(Global Language Support (GLS))是允许 Informix 产品、单个应用程序或 UDR 支持多种语言的 Informix 特性。本节概述了一些重要术语。
GLS 语言环境
对应于语言、地域和代码集:
语言(language)指定可以使用的字符种类、如何对字符进行排序和比较、字母大小写转换和消息。
地域(territory)确定日期、时间、货币和数字的格式。
代码集(code set)包括单字节和多字节字符串处理,以及同一字符在客户机和服务器上不同表示法之间的代码集转换。
缺省的 Informix 语言环境如下:
en_us.8859-1 UNIX 8859-1 是 ISO8859-1 代码集。
en_us.1252Windows1252 是 Microsoft 代码集。
ISO8859-1 代码集有另外一些形式。0333 是其精简形式,而 IBM 又将 ISO8859-1 注册为CCSID 819。因此以下三种语言环境指的是同一代码集:
en_us.8859-1
en_us.0333
en_us.819
Informix 使用以下环境变量来指定语言环境:
CLIENT_LOCALE 客户机应用程序使用的语言环境。
DB_LOCALE 数据库中数据的语言环境。
SERVER_LOCALE 数据库服务器用于其特定于服务器的文件的语言环境。
国际化
指的是实现产品(如 DataBlade 模块),以便它们与语言无关。国际化的 UDR 无需更改或重新编译源代码即可支持不同语言、地域和代码集。
Informix 服务器是国际化的产品。Informix GLS 库提供了一些函数,以使 DataBlade 模块和客户机应用程序能使用 GLS 语言环境中的信息来:
处理单字节和多字节字符
格式化日期、时间和数值数据
本地化
指的是在运行时解析特定语言环境的信息,以使国际化的产品针对该语言环境正确执行;例如,本地化的应用程序使用户能看到用他们自己的语言显示的错误消息和用他们期望的格式显示的日期。
对特定语言环境的支持集中在一组文件中。(特定于语言环境的 DataBlade 消息存储在系统目录中)。UNIX glfiles 命令会输出 UNIX 系统支持的语言环境的列表。对于 Informix 分发版中没有包括的语言环境,International Language Supplement 提供语言环境、代码集转换和已翻译的用户界面与文档。
尽管本技术说明主要讨论 UDR 实现,但 DataBlade 开发人员也需要考虑任何客户机组件的国际化,这些组件是作为 DataBlade 模块的一部分而包括在模块中的。
GLS 产品
GLS 文档
DataBlade 开发人员需要以下文档:
Informix Guide to GLS Functionality
这是实现支持 GLS 的产品的核心文档。
Informix GLS Programmer's Manual
该手册描述如何使用 Informix GLS API 调用。
GLS Documentation and Release Notes
请常常查看最新的分发版以获得新的信息:
$INFORMIXDIR/release
Informix DataBlade API Programmer's Manual
讨论用于产生错误和输出跟踪消息的 GLS 特性。
DataBlade Developers Kit User's Guide
DBDK 生成使用 GLS 调用的源代码。
DataBlade 开发人员需要什么 Informix 产品?
您需要以下 Informix 产品来实现支持多语言的 DataBlade 模块:
Informix Dynamic Server
DataBlade Developers Kit
BladeSmith 生成使用多个 GLS 库函数的代码,包括用于异常处理和跟踪的函数。
Client Software Development Kit
International Language Supplement (ILS),用于所有您计划支持但缺省分发版没有包括的语言环境(用 glfiles 命令检查),以使您能在每个语言环境中测试blade 的行为。
您还需要前面的 GLS 文档一节中列出的文档。
客户需要什么 Informix 产品?
您的客户需要以下产品以在其语言环境中运行您的 DataBlade 模块:
Informix Dynamic Server
您的 DataBlade 模块
用于客户的语言环境的 International Language Supplement (ILS)(如果它尚未包括在分发版中的话)。
客户还必须通过适当地设置 CLIENT_LOCALE 和 DB_LOCALE 环境变量来正确地设置其 GLS 环境。
什么需要国际化/本地化?
DataBlade 模块开发人员必须同时解决国际化问题与本地化问题。首先,您需要实现 UDR 以使其与语言无关。也就是说,对于其要处理的数据,DataBlade 模块不对在运行时使用的语言、地域或代码集做任何假定。因此您就需要将任何与语言有关的部分(如错误消息)移植到您希望支持的每一个语言环境。本节概述了一些问题。
文本 I/O
Informix GLS 库提供这样的函数,它们使用当前正在处理的语言环境中的信息来扫描和格式化多字节字符串、日期、数字和货币。使用这些函数来解析输入字符串或格式化输出字符串。它们在以下文档中有描述:
Informix Guide to GLS Functionality
Informix GLS Programmer's Manual
在何处将这一点应用到 UDR 的示例是对 opaque 类型外部(基于字符)格式的处理。
DBDK 为 opaque 类型输入/输出支持函数生成代码,该代码在 GLS 文本与 opaque 类型内部二进制表示法之间进行转换。
mi_get_string 和 mi_put_string() DataBlade API 函数自动对字符串/文本数据执行代码集转换。
(对于数值数据的二进制传送,mi_put_* 和 mi_get_* 函数 ― 用于 opaque 类型发送/接收支持函数 ― 也会自动执行代码集转换)。
错误消息
syserrors 系统目录表存储 DataBlade 异常消息,这些消息可以通过向 mi_db_error_raise() 传递 MT_SQL消息类型来产生。每个错误消息项都有与之相关的语言环境。当错误被产生时,服务器会设法将 CLIENT_LOCALE 与 syserrors 中的一个错误匹配。它首先进行显式匹配,如果找不到匹配的对象,则以下列次序进行搜索,尝试部分匹配:
确切的客户机语言环境
例如:es_es.8859-1
客户机语言环境的语言 + 地域
例如:es_es
仅客户机语言环境的语言
例如:es
缺省(en_us)语言环境
UNIX 上的 en_us.8859-1,以及 NT 上的 en_us.1252。
解析出最终缺省 en_us 语言环境的方法取决于用户是否设置了 CLIENT_LOCALE:
如果未设置 CLIENT_LOCALE,则根据语言环境的部分匹配得出缺省语言环境。
如果 en_us.1252(NT)错误位于 UNIX 服务器上的 syserrors 表中,则根据 en_us 部分匹配查找消息。
如果设置了 CLIENT_LOCALE,则根据对该平台的完全匹配解析出缺省语言环境。
如果 en_us.1252(NT)错误位于 UNIX 服务器上的 syserrors 表中,则将根据 en_us.8859-1 的完全匹配查找语言环境,从而产生 “Message cannot be found” 错误。
服务器的 9.2 发行版都将执行 en_us 语言环境的部分匹配,而不管是否设置了 CLIENT_LOCALE。同时,要意识到 BladeSmith 缺省时生成语言环境为 en_us.1252 的消息。如果您的目标是 UNIX 系统,请将语言环境更改为 en_us.8859-1。如果您计划支持 NT 和 UNIX,请同时向两个语言环境注册同一错误消息。
您还可以将 DataBlade 异常消息翻译成您打算支持的各种特定语言,并将这些消息存储在 syserrors 系统目录表。(顺便说一下,如果您希望使用 UDR 插入本地化的消息,请参阅下面的“从 UDR 将本地化错误消息插入到 syserrors 中”一节)。
请参阅 Informix DataBlade API Programmer's Manual 中“Exception Raising”一节和下面的示例。
跟踪消息
systracemsgs 系统目录存储可以用 gl_tprintf() 输出的 DataBlade 跟踪消息。除了翻译所有要显示给最终用户的跟踪消息以外,请务必提供 en_us 缺省消息。
请参阅 Informix DataBlade API Programmer's Manual 中的“DataBlade API Support for an Internationalized UDR”一节。
查询处理
Informix 支持用于数据库对象的名称(如表和列)的多字节字符。当然,表可以在 NCHAR 和 NVARCHAR 列中存储包含多字节字符的值。
检查使用 mi_exec() 或 mi_exec_prepared_statement() 执行 SQL 查询的任何 UDR。如果查询可以访问用户定义的数据库对象或获取用户提供的数据,则 UDR 应该在创建 SQL 语句和获取查询结果时准备好处理非 ASCII 字符。
示例
错误消息
RGBA DataBlade 模块实现管理计算机颜色的 opaque 类型。
用于 RGBA 的输入函数将外部(文本)表示法转换成内部的 C 数据结构。当填充了 C 结构后,DataBlade 代码会检查每个元素是否在 0-255 内。如果用户输入 256,则根据用户的语言环境会产生与下面相似的错误:
语言环境 错误消息
en_us.1252 (URGB1) - RGBAInput: R value 256 is not within the valid range of 0-255.
es_es.8859-1 (URGB1) - RGBAInput: el valor R 256 no calza entre los limites de 0-255.
本节描述源代码需要做什么、要将什么消息存储在 syserrors 表中,以及数据库服务器如何决定输出哪个错误。
下面的代码演示输入函数如何检查 RGBA 的红色部分以及如何产生错误。
if(Gen_RetVal->red < 0 || Gen_RetVal->red > 255)
mi_db_error_raise
(
Gen_Con, /* Connection handle */
MI_SQL, /* Message type */
“URGB1”, /* SQLSTATE in syserrors */
“FUNCNAME%s”, /* token takes string */
“RGBAInput”, /* value for FUNCNAME */
“VALUE%d”, /* token takes an integer */
(mi_integer) Gen_RetVal->red, /* value for VALUE token */
NULL /* No more tokens */
);
mi_db_error_raise() 调用中的 MI_SQL 消息类型表明应该根据第三个参数中的 SQLSTATE 值在 syserrors 系统目录表中查找错误。如果我们从 syserrors 系统目录进行选择,我们会看到有两个不同的“URGB1”错误:
> select * from syserrors where sqlstate='URGB1';
sqlstate URGB1
locale en_us.1252
level 0
seqno 1
message %FUNCNAME%: R value %VALUE% is not within the valid range of 0-255.
sqlstate URGB1
locale es_es.8859-1
level 0
seqno 1
message %FUNCNAME%: el valor R %VALUE% no calza entre los limites de 0-255.
用以下 SQL 插入(insert)语句将这些异常消息插入到 syserrors 系统目录表中:
insert into informix.syserrors (level, seqno, sqlstate, locale, message)
values
(
0,
1,
“URGB1”,
“en_us.1252”,
“%FUNCNAME%: R value %VALUE% is not within the valid range of 0-255.”
);
insert into informix.syserrors (level, seqno, sqlstate, locale, message)
values
(
0,
1,
“URGB1”,
“es_es.8859-1”,
“%FUNCNAME%: el valor R %VALUE% no calza entre los limites de 0-255.”
);
RGBA 项目是通过 BladeSmith 使用的缺省语言环境 en_us.1252 生成的。我们稍后就会看到当在 UNIX 机器上遇到错误时这有什么影响。
以下示例假定在 Solaris 机器上运行,机器有缺省的 en_us.8859-1 语言环境。如果未设置 CLIENT_LOCALE,服务器会查找缺省美式英语语言环境的部分匹配,并输出该消息:
bladerunner% echo $CLIENT_LOCALE
CLIENT_LOCALE: Undefined variable
bladerunner% dbaclearcase/“ target=”_blank“ >ccess colors -
> create table colors (id serial, color rgba);
> insert into colors values (0, '255 0 255 0');
> insert into colors values (0, '256 0 255 0');
(URGB1) - RGBAInput: R value 256 is not within the valid range of 0-255.
如果设置了 CLIENT_LOCALE,则如果该语言环境存在,服务器会为该语言环境输出消息:
bladerunner% setenv CLIENT_LOCALE es_es.8859-1
bladerunner% dbaccess colors -
> insert into colors values (0, '256 0 255 0');
(URGB1) - RGBAInput: el valor R 256 no calza entre los limites de 0-255.
首先服务器设法匹配整个语言环境,
如果找不到匹配,则它会尝试匹配语言和地域。如果仍找不到匹配,则它会尝试只匹配语言。例如,将西班牙语消息输入到 syserrors 中,其语言环境为 es_es.8859-1。即使客户机有不同的代码集,仍可解析出消息:
bladerunner% setenv CLIENT_LOCALE es_es.CP1252
bladerunner% dbaccess colors -
> insert into colors values (0, '256 0 255 0');
(URGB1) - RGBAInput: el valor R 256 no calza entre los limites de 0-255.
接下来我们将 CLIENT_LOCALE 设置为在 syserrors 中没有项的德语语言环境。如果服务器不能根据部分匹配找到适合语言环境的消息,它会寻找 en_us 语言环境的完整匹配。在这种情况下,我们缺省的 UNIX 语言环境是 en_us.8859-1,但 en_us 错误消息是用于 en_us.1252 的,因此它输出 ”message cannot be found“ 错误:
bladerunner% setenv CLIENT_LOCALE de_de.8859-1
bladerunner% dbaccess colors -
> insert into colors values (0, '256 0 255 0');
(URGB1) - Message cannot be found.
因此,对于每个您计划运行的平台,请确保在它的缺省语言环境中插入了英语消息:en_us.8859-1(UNIX)和 en_us.1252(NT)。
从 9.2 开始,服务器将对 en_us 语言环境完成部分匹配,并且将不再有插入重复的 en_us 错误的必要。
浮点值
ifx_gl_format_number() 和 ifx_gl_convert_number() 在文本字符串和浮点变量之间进行转换。然而,两个函数都将浮点值存储为十进制。因为双精度值的范围大于十进制的范围,所以这两个函数无法转换非常大的浮点值。
9.2 中的两个新函数 ifx_gl_format_double() 和 ifx_gl_convert_double() 使用双精度而不是十进制。遗憾的是,新函数的函数原型不小心在 $INFORMIXDIR/incl/public/ifxgls.h 中被省略了,因此在下面包括它们:
MI_EXT_DECL int
ifx_gl_convert_double (double *d,
char *dstr,
char *format);
MI_EXT_DECL int
ifx_gl_format_double ( char *dstr,
int len,
double d,
char *format);
下面的 GetDouble() UDR 显示了如何将 mi_lvarchar UDR 参数转换成双精度值。如果传递给它的整数标志是 0,则它使用 ifx_gl_convert_number() 执行转换。否则,它使用 ifx_gl_convert_double() 执行转换。
#include
#include
mi_double_precision *
GetDouble (mi_lvarchar *Gen_param1, mi_integer flag, MI_FPARAM *fp)
{
mi_double_precision *retval=NULL;
gl_mchar_t *Gen_InData;
int status, glerror;
/* ifx_gl_* return code */
mi_decimal dec_number;
/* for ifx_gl_convert_number */
double d=0;
/* double result */
mi_string errbuf[80];
/* Allocate the return value. */
retval =
(mi_double_precision *)mi_alloc(sizeof(mi_double_precision));
if(retval == NULL)
{
mi_fp_setreturnisnull(fp, 0, MI_TRUE);
mi_db_error_raise(NULL, MI_EXCEPTION, ”mi_alloc failed!“);
return (mi_double_precision *)NULL;
}
/* Convert mi_lvarchar argument
into a NULL-terminated string. */
Gen_InData = (gl_mchar_t *)mi_lvarchar_to_string(Gen_param1);
/* Convert the null-terminated string to a double.
** If the return value is not 0, the conversion failed and
** ifx_gl_lc_errno() retrieves a more specific error code.
*/
if(flag == 0) /*
use ifx_gl_convert_number() */
{
/* ifx_gl_convert_number()
stores the result in a decimal
** variable, so it handles a smaller range than a double.
*/
status=ifx_gl_convert_number(&dec_number, Gen_InData, ”%e“);
if(status != 0)
glerror=ifx_gl_lc_errno();
else
dectodbl(&dec_number, (double *)&d);
/* convert to double */
}
else /* use ifx_gl_convert_double()
*/
{
/* ifx_gl_convert_double() stores
the result in a double
** variable.
*/
status=ifx_gl_convert_double(&d,
(char *)Gen_InData, (char *)”%e“);
if(status != 0)
glerror=ifx_gl_lc_errno();
}
if(status != 0)
{
switch (glerror)
{
case IFX_GL_INVALIDFMT:
sprintf(errbuf,
”GetDouble: conversion failed [%d:IFX_GL_INVALIDFMT]“,
status);
break;
case IFX_GL_PARAMERR:
sprintf(errbuf,
”GetDouble: conversion failed [%d:IFX_GL_PARAMERR]“,
status);
break;
default:
sprintf(errbuf,
”GetDouble: conversion failed [%d:%d]!“,
status,glerror);
break;
}
mi_fp_setreturnisnull(fp, 0, MI_TRUE);
mi_db_error_raise(NULL, MI_EXCEPTION, errbuf);
return (mi_double_precision *)NULL;
}
mi_free(Gen_InData); /*
mi_lvarchar_to_string() allocated val */
*retval = (mi_double_precision) d;
return retval;
}
如果传递给 GetDouble() 的整型参数是 0,则底层的代码使用 ifx_gl_convert_number()。以下两个查询中的数字足够小,可以以十进制存储:
execute function GetDouble(”1234.5“,0);
(expression)
1234.500000000
1 row(s) retrieved.
execute function GetDouble(”9.875e-43“,0);
(expression)
9.875e-43
1 row(s) retrieved.
然而,接下来的数字对于十进制而言太大了,所以查询失败:
execute function GetDouble(”1.000000e+150“,0);
(expression)
(U0001) - GetDouble: conversion failed [-1:IFX_GL_PARAMERR]
Error in line 24
Near character position 45
如果传递给 GetDouble() 的整型参数是 1,那么底层代码使用 ifx_gl_convert_double(),它直接以双精度存储结果。所有的查询都会成功。
execute function GetDouble(”1234.5“,1);
(expression)
1234.500000000
1 row(s) retrieved.
execute function GetDouble(”9.875e-43“,1);
(expression)
9.875e-43
1 row(s) retrieved.
execute function GetDouble(”1.000000e+150“,1);
(expression)
1.000000e+150
1 row(s) retrieved.
从 UDR 将本地化错误消息插入到 syserrors
Datablade 开发人员可能需要将语言环境与当前会话不同(例如,希望安装 SJIS 消息而当前会话的 DB_LOCALE 被设置为 EUC)的本地化错误消息插入到 syserrors 表中。当消息的语言环境与会话的语言环境不同时,通过 SQL 脚本装入消息或使用 mi_exec() 从 UDR 装入消息的正常过程是不可靠的,因为 SQL 解析器不能识别的字符将触发错误条件。
通过创建一个 UDR,它使用预编译的包含 sqlstate 占位符和消息数据的语句(mi_prepare())来装入错误消息,可以避免这个 SQL 解析器问题。稍后,在对执行预编译的语句(mi_exec_prepared_statement())的调用中提供数据。
下面的 UDR 代码演示了如何将语言环境的 sqlstate 和消息列字符串编辑成消息数组,然后将其作为数据传递以将消息插入到 syserrors。由于可读性原因,演示的特定语言环境是 EUC,但该方法可用于任何语言环境。
#include
#include
#include ”mi.h“
#define MAX_MSG 3
char *enus_msg[MAX_MSG][2] = {
”XT010“, ”First error message for insertion“,
”XT020“, ”Second error message for insertion“,
”XT030“, ”Third error message for insertion“
};
/*
* Title: gls_insert_enus
* Purpose: Add localized messages to the system error table 'syserrors'
* for given locale independent of locale setting of session.
*/
mi_integer
gls_insert_enus()
{
MI_DATUM args[2]; /* pointers to column values */
mi_integer lens[2]; /* lengths of column values */
mi_integer nulls[2]; /* null capability of columns */
mi_string *types[2]; /* types of columns */
mi_integer i;
MI_STATEMENT *stmt;
MI_CONNECTION *conn = mi_open(NULL, NULL, NULL);
/*
* Prepare statement using placeholder values for sqlstate and message
* columns while providing fixed values for locale, level, seqno columns.
*/
stmt = mi_prepare(conn,
”insert into syserrors values(?,'en_us.8859-1',0,1,?)“, NULL);
for (i=0; i
{
args[0] = (MI_DATUM)enus_msg[i][0]; /* Set pointer to sqlstate string */
lens[0] = strlen(args[0]); /* Set length of sqlstate string */
nulls[0] = MI_FALSE; /* Set null handling capability */
types[0] = ”char(5)“; /* Set sqlstate column type */
args[1] = (MI_DATUM)enus_msg[i][1]; /* Set pointer to message string */
lens[1] = strlen(args[1]); /* Set length of message string */
nulls[1] = MI_FALSE; /* Set null handling capability */
types[1] = ”varchar(255)“; /* Set message column type */
mi_exec_prepared_statement(stmt,0,0,2,args,lens,nulls,types,NULL,NULL);
}
mi_close(conn);
return 0;
}
已知问题
94450: ifx_gl_format_number() outputs %g incorrectly if value is very large
如果指数表示法中的字符串非常大,则输出会在“e”的后面插入空格。例如,值:
.123456789012e80
变成:
1.234567e 79
tomcat8890 回复于:2004-09-28 14:43:18精华
原文转自:www.ltesting.net
篇3:abiword的中文显示问题!_Unix系统
1,在/etc/X11/Xsession.d/25xchinput-start中添加:export G_FILENAME_ENCODING=@GBK
2,在/usr/share/AbiSuite-2.2/templates/normal.awt-zh_CN中修改:font-family:SimSun;
原文转自:www.ltesting.net
篇4:系统复习时需要注意的问题
(1)要在尝试回忆中进行。
复习中,遇到问题不要急于看书或问人,要先自己想。这对于集中注意力,强化记忆,提高学习效率很有好处。如果分成几次复习一个完整的知识,那么每次复习时,先把上次内容再回忆一下。这样做不仅保持了知识的连贯性,而且对记忆有很好的效果。
(2)适当安排复习内容。
一种是紧紧围绕一个中心内容进行。例如复习总结二元一次方程组的解法,就要抓住什么是二元一次方程组,它的解有几种情况,解二元一次方程组的思路是什么,有哪几种解法,有哪几种类型题等问题进行。与此无关的内容暂不复习。这样就使二元一次方程组的解法问题在头脑中处于明显突出的地位,印象深刻。有的学生复习没有明确的中心,效果很差,看一遍只能起到一个熟悉的作用。知识仍然是零散的、没有围绕知识点形成知识团块。另一种是按预定的章节进行复习总结。把本章的概念、公式、法则、定理、定律、要点等精华提取出来,再贯通思考它们之间的内在联系,用“联系”再把这些精华要点“串”起来,有机地“挂”‘在自己的知识“网”上。另外,复习总结的内容不要超越教学大纲,更不要离开教材的范围和体系。否则会出冤枉劲,甚至造成错误。
(3)要认真做好复习笔记。
在复习中同学们经过艰苦的思考获得了完整而系统的知识,应当珍惜这个学习成果。及时用笔记的形式记录下来。有了复习笔记,就可以使下次的复习建立在这次复习的基础上,不必再从头开始了。有了复习笔记,时常看看可以起到提纲携领、强化记忆的作用。调查中我们发现会学习的学生,一般都很重视做复习笔记。经过一次又一次的努力,终于把厚厚的一本书变成了“薄薄”的几页纸。而这几页纸上记录的正是“编织”成的“知识之网”。复习笔记千万不要变成课本的再版,上课笔记的再造,要尽量简明,一目了然。此外,笔记要具有自己的特长。凡自己认为掌握得好的可以从略,认为掌握不好的则要详细些,可以说笔记是自己劳动的结晶,知识的精华,一定要妥善保管好,备考时用起来,可以使自己迅速回到曾经到过的最高水平;使自己迅速地抓住知识的全局,优秀生在考前往往只翻一下复习笔记就行了,考前很轻松,这种轻松是平时紧张劳动换取的。
(4)要抓紧平时的学习。
要在分析比较的基础上,对所学知识进行综合、归纳和抽象概括,从而完成知识系统化的工作。概念是思维活动的细胞,如平时不抓紧学习,那么复习就变为“补课”了,一天复习下来,只不过弄清一些局部问题,根本无法掌握系统化的知识,这样做,时间也不允许,可见抓紧平时的学习(上课、预习、作业等)是搞好复习的基础,复习是平时学习的深入和继续。
(5)要适当看点题、做点题。
先把过去做的有关习题温习一下,具体方法先回忆解题思路,在这个基础上再适当做点题,目的是检查复习效果,加深对知识的理解,培养运用所学知识去解决问题的能力。选题要围绕复习的中心来选,通过做综合题来推动知识的完整化和系统化,培养综合运用知识的能力。
篇5:VMware虚拟机创建系统时的问题
用VMware虚拟机,安装时,报好几个警告,在创建好虚拟系统后,点击 启动此虚拟机,则会弹出一个警告
The default sound device cannot be opened:
使用的设备标识号已超出本地系统范围,
Virtual device sound will start disconnected.
此警告意思是说,我的主机上的声卡,虚拟机自带的Vmware-tools驱动无法支持,所以进入虚拟机后,声音不能正常发出,建议下载最新的针对其型号的vm驱动
接着,然后弹出如下警告:
No bootable CD, floppy or hard disk was detected.
To install an operating system, insert a bootable CD or floppy and restart the virtual machine by clicking the Reset button.
这是因为我没有安装盘,两种解决办法:
1、如果要用安装盘安装,要把安装盘放入光驱,
2、如果要用ISO文件安装要双击vwmaer界面右边的CD-ROM选使用ISO镜像,在浏览里找到你的ISO文件。然后就和真的安装系统一样操作就OK了。
篇6:samba中文乱码问题终极篇Unix系统
环境:redhat as 3 up 3
vi /etc/samba/smb.conf
根据locales的设置,修改该文件:
1. 如果locale是zh_CN.UTF-8,做如下设置:
display charset = UTF-8
unix charset = UTF-8
dos charset = UTF-8
2. 如果locale是zh_CN.GBK或zh_CN.gb2312,做如下设置:
display charset = cp936
unix charset = cp936
dos charset = cp936
重启samba:
service samba restart
则无论从windows的网上邻居,还是直接用securecrt登陆,均可显示正常中文,
samba中文乱码问题终极篇Unix系统
,
原文转自:www.ltesting.net
篇7:通过mount第二个硬盘解决故障系统备份问题(by Simon Zhan V3.0)Windows系统
:idea: 因为又是五一节,在值班无聊,有点空,就把原来存在的一点疑问部分重新做了一遍,以下红色字体部分是新增的内容,总算补全了, 机器配置Scounix505,赛扬500,64M,COMPAQ微机,两块硬盘都挂在第一个IDE口的线缆上,主硬盘接在主口,目标硬盘接在从口。硬
:idea:
因为又是五一节,在值班无聊,有点空,就把原来存在的一点疑问部分重新做了一遍,以下红色字体部分是新增的内容,总算补全了。
机器配置Sco unix 505,赛扬500,64M,COMPAQ微机,两块硬盘都挂在第一个IDE口的线缆上,主硬盘接在主口,目标硬盘接在从口。硬盘容量都是8G的,但unix分区只有3G左右。
1、mkdev hd 1 0 (两个数字间有空格,第一个数字代表同一条硬盘线上端口号:0=master 1 =slave;第二个数字代表IDEr控制器口:0=primary 1=secondary).
提示可能覆盖硬盘数据,是否继续?按Y
2、系统自动调用/etc/dkinit,提示选择硬盘参数(共3项)
选3(即选择默认参数),回车后又提示选择参数界面,不要怀疑刚才有按错键,按q退出。
3、系统自动调用fdisk,因为我们要的是原来的分区,所以这一步千万不能重新分区,按q跳过。
4、系统自动调用badtrk,提示已有合法的分区表,要保留原有的数据,不能改变现有的坏道表,是否要继续?输入0后按y.接着要再按两次Q。
5、[color=red:2df4e82bc6]注意:如果这时出现的提示是叫你输入在该区要分割的division数目,应该要立即按del键中断操作,否则你的目标盘数据将会跟你说再见的。因为此后的操作是在目标盘上分division了。原来的数据将全部删除了[/color:2df4e82bc6]系统自动调用divvy,出现的是目标盘上的分片(divison)表,其中除name一栏是空的以外,其他都是原来的分片表数据。这个name就是我们以下要命名的。按n(即name命名)命令,出现选择片号(divison)提示,输入你想要mount的分片号(一般是root片),一般是2,而且文件系统类型是htfs。(即root分片,为安全起见,可以事先在原来的系统中用divvy查看一下root片号是否为2),提示输入分片名,如newroot(名字随便起),回车即可看到更新的分片表。按q退出,又会出现是否安装等3项菜单,按i(install,安装)安装即可。退回到命令行。OK!至此前期工作已全部完成。
方法2(注:这个办法改编自此贴
bbs.chinaunix.net/forum/7/1108/440581.html):
假如是IDE的硬盘,跳成slave接到一台好的SCO机器上做从盘,
启动那台好的SCO机器
mknod /dev/newroot b 1 106
mount /dev/newroot /mnt
拷贝出从盘root下的数据
如果root后还有逻辑分区,那么把106+1是后面第1个,+2是第2个,如
umount /mnt
mknod /dev/d2u b 1 107
mount /dev/d2u /mnt
拷贝出从盘root后第1个分区的数据
后面依次类推。
以下是所要应用的具体例子。
1、要mount新增的文件系统,输入mount /dev/newroot /mnt
2、要查看新的文件系统的分片表,可divvy /dev/newroot
注:以上操作不会破坏两块硬盘原有的数据。
[color=red:2df4e82bc6][b:2df4e82bc6][size=18:2df4e82bc6]重要说明:1.其实一般情况下,如果两块硬盘各接一个IDE口,即目标盘在第二个IDE口,前面的四个步骤可以不用做,直接做第五步,divvy /dev/hd10(此处的1 0与前面步骤1中的意义是一样的,但1和0之间没有空格)即可。注意,如果在接着出现的画面头两行有warning之类的提示,也要中断操作,虽然强行操作不会影响数据(不能一定保证),但在后续的工作中,比如mount,也会提示出错,不能mount成功的。出现这个提示通常是因为把两块硬盘接在一根信号线的缘故。其他操作同步骤5。
2.再次重申,由于以上操作危险性比较大,如果你没有严格按照上述硬盘接法操作步骤进行,比如做实验,请务必保证在做上述实验前,目标盘上没有重要的数据,否则如果操作不慎,目标盘的数据就byebye了。。[/size:2df4e82bc6][/b:2df4e82bc6][/color:2df4e82bc6]
俺 回复于:-01-18 17:53:53俺的系统中有一个IDE盘(IDE0:0没用过),一个IDE光驱(IDE1:0),一个SCSI盘(SCSI0:0启动盘),现在俺想把IDE盘加入系统中,俺该如何做?
这实际是俺下载的一个sco for vm的系统。其中的IDE盘用不上,俺想用来跑数据库。
simonzhan 回复于:2003-01-19 10:00:16如果你的IDE盘是空的,那就是把上面的步骤从头到尾做一遍了,其中fdisk这一步肯定是要做了。然后下面的divvy这一步估计只要一个分片就可以了。不过我在有scsi盘的情况下没有试过。不知是否有不一样的地方。请自行试验。这也是最有乐趣的地方了。不是吗?
sunweipost 回复于:2003-04-16 16:55:15一个15G的硬盘在做第二步时显示默认参数都为空,按BIOS中的提示只能输入一部分参数,并老是提示找不到硬盘,有没有什么好办法???
SuperRio 回复于:2003-04-26 09:15:57首先,15G硬盘在bios里头能不能认到???
若可以,确认所在IDE的位置,本身的主从,记下参数,chs,三项就够了......
mkdev hd * *时候确认,即可。
再下一步,就可以选择第2选项,修改chs。
simonzhan 回复于:2004-05-01 21:38:38今天把这篇文档重新做了补充,顶上来让有需要的兄弟参考一下下!:)
wenyue 回复于:2004-08-14 23:17:37谢谢楼主!我正要这个东东!
SCSI硬盘能这样做吗?
simonzhan 回复于:2004-08-16 01:17:18scsi的我没有条件试,但在理论上是一样的,应该可以的。
cust 回复于:2004-12-01 19:10:48mknod 中 major , minor 是怎样确定???
CNL 回复于:2004-12-01 21:11:47major是设备驱动在/etc/conf/cf.d/mdevice中登记的号码,
minor需要自己计算,以前帖子有
搜标题:关键词”mknod"
孟军 回复于:2004-12-09 17:44:32版主: 您好! 我的硬盘也因突然停电而不能工作, 用您上面的方法divvy /dev/hd10,出现的是目标盘上的分片表,其中除name一栏是空的以外,其他都是原来的分片表数据,
但root片(即2)的文件系统类型不是htfs,而变成了 NON FS 但分片大小未变,重新命名后也mount不上,请教各位高手该如何处理?我有较重要的数据在里面,如何弄出来?谢谢!
CNL 回复于:2004-12-10 14:27:41你的这种情况可以尝试一下mknod直接创建第2硬盘指定分区设备名的办法,
创建后使用fsck -ofull /dev/你建的设备名修复后再mount
搜索mknod,以前有贴。
simonzhan 回复于:2004-12-12 20:13:55CNL兄的方法更妥当,请参考一下。
孟军 回复于:2004-12-13 16:37:23谢谢两位版主的指点,我照您说的办法做了仍然不行.
我是这样做的,不知有什么问题?
#mknod /dev/d2root b 1 106
#fsck -ofull /dev/d2root
出现错误提示如下:
WARNING: wd0:Error on fixed disk dev1/106, block=0, cmd=0x00000020 status 0x00005940,sector=821465,
cylinder/head=3208/0
fsck: cannot determine filesystem type of /dev/d2root
我输入如下命令时也出现类似提示
#mount /dev/d2root /mnt
WARNING: wd0:Error on fixed disk dev1/106, block=0, cmd=0x00000020 status 0x00005940,sector=821465,
cylinder/head=3208/0
mount: cannot stat '/dev/d2root'
请问还有其它办法吗?谢谢
CNL 回复于:2004-12-13 18:55:29你的硬盘物理上有坏块,手工加入badtrk表后再fsck吧
成功的可能性是50%:
假如你建立的第2硬盘root分区名字是d2root,那么:
# /etc/badtrk -f /dev/rd2root (分区名前加r表示裸设备)
选择5. Add entries to bad block table
手工输入提示错误的cylinder/head等参数
循环把所有提示的坏块加完,
最后q退出
再fsck -ofull /dev/d2root
如果还有坏块,重复上述操作
孟军 回复于:2004-12-14 16:40:23版主:您好!照您所教的做了,警告没有了。
但仍然不能fsck和mount
出现的提示仍是:
fsck: cannot determine filesystem type of /dev/d2root
mount: cannot stat '/dev/d2root'
还有其它方法可试吗?现在只有死马当作活马医了。谢谢!
CNL 回复于:2004-12-14 18:22:52老大,希望虽然不大,你尝试一下吧:
1、指定文件类型,一般root分区都是HTFS
# fsck -F HTFS -ofull /dev/rd2root
# mount -r -f HTFS /dev/d2root /mnt
2、如果不行,把硬盘拔到一台空闲机器设置为master,
用能杀引导区病毒的杀毒盘加电引导后杀杀毒再试
再不行,我也没招了,如果有关键业务数据送硬盘专业维修公司看看吧
孟军 回复于:2004-12-15 10:05:24CNL版主:您好!
谢谢您这几天来不厌其繁的指导,虽然我的盘还是没能弄好(可能是坏得太严重了).但我还是从您这里学到了许多知识.再一次谢谢您!
lw371 回复于:2004-12-15 11:17:40block=0是masterboot块,可按answer版主的办法试,还是有一丝希望的:
把坏盘挂回原机器,跳线全恢复原样,在类似配置的机器上做一套应急引导盘
[quote:5a9789ee3d]
解决步骤: 1)插入应急引导盘,
出现 Boot: 输入 hd(40)unix
2)进入单用户维护模式
instbb hd /dev/hd0a
将分区引导块写入硬盘
3) dparam -w
将主引导块代码写入硬盘的主引导块
[/quote:5a9789ee3d]
无论系统硬件有多么强壮,及时备份数据的重要性都应该被强调再三,
血的教训太多了。
孟军 回复于:2004-12-15 12:41:45lw371:您好!
我的硬盘引导块应该没坏,应该是root分区损坏了,类型都变成了NON FS.
我也照您教的做了:
出现 Boot: 输入 hd(40)unix
但根本就不能进入单用户模式:提示是
PINIC: srmountfum -Error 22 mounting rootdev hd(1/42)
Cannot dump 130975 pages to dumpdev hd(1/41):space for only 0 pages
Dump not completed
** safe to power off **
** press any key to reboot **
谢谢您!
原文转自:www.ltesting.net
篇8:设计风机盘管系统时应注意哪些问题?
设计风机盘管系统时应注意哪些问题?
(1)冷凝水的排出管应当就近设立管排水,这样可缩短水平排水的距离,减少因排水管坡度不够而集水、滴水的危险,从每个风机盘管上引出的排水管的管径以φ20为宜,而排水立管和总管的尺寸还应大些。
(2)在风机盘管与冷热水管接管上的手动与电动水阀下边应做集水盘。该集水盘可与风机盘管集水盘连通,也可以要求生产厂家将原集水盘加长,以保证阀门等接头处的凝结水能沿集水盘排出,
而且要做好机外保温防止二次凝结水。
(3)要有检查口,其位置与大小,具体工程应和建筑紧密配合,协商解决好。应注意安装风机盘管处小吊顶拆装的方便,因为这是使用维修风机盘管必须的。
(4)回风口要装过滤网,以保护盘清洁,否则热交换效率低很快。
(5)注意当要在风机盘管上接道时,应选用高静压的风机盘管设备。
(6)要注明水阀的安装位置以免接反。现在很多工程的水阀装反,要提醒电源接线时不要把“0”线接错,接错了就要烧坏电机。
篇9:一类时谐微波加热系统最优控制问题的必要条件
一类时谐微波加热系统最优控制问题的必要条件
本文讨论的是受控制系统为线性的'时谐微波加热系统(即为时谐Maxwell方程与热传导方程的耦合),给出了目标为均匀加热且耗能最小时的和最优控制问题的数学模型和必要条件.
作 者:邓红勇 韦维 DENG Hong-yong WEI Wei 作者单位:邓红勇,DENG Hong-yong(贵阳中医学院基础部,贵州贵阳,550002)韦维,WEI Wei(贵州大学数学系,贵州贵阳,550025)
刊 名:贵阳学院学报(自然科学版) 英文刊名:JOURNAL OF GUIYANG COLLEGE(NATURAL SCIENCES) 年,卷(期):2009 4(3) 分类号:Q141.4 关键词:微波加热 最优控制 Maxwell方程 耦合系统 必要条件★VMWare 中配置 FreeBSD 5.4 X时的问题Unix系统
文档为doc格式