本文整理汇总了C++中GetDatabaseEncoding函数的典型用法代码示例。如果您正苦于以下问题:C++ GetDatabaseEncoding函数的具体用法?C++ GetDatabaseEncoding怎么用?C++ GetDatabaseEncoding使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GetDatabaseEncoding函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: db_encoding_strdup
/*
* Return a strdup'ed string converted from the specified encoding to the
* database encoding.
*/
static char *
db_encoding_strdup(int encoding, const char *str)
{
char *pstr;
char *mstr;
/* convert the string to the database encoding */
pstr = (char *) pg_do_encoding_conversion(
(unsigned char *) str, strlen(str),
encoding, GetDatabaseEncoding());
mstr = strdup(pstr);
if (pstr != str)
pfree(pstr);
return mstr;
}
开发者ID:BioBD,项目名称:Hypothetical_Indexes,代码行数:20,代码来源:pg_locale.c
示例2: xmlnode_in
Datum
xmlnode_in(PG_FUNCTION_ARGS)
{
pg_enc dbEnc;
XMLNodeParserStateData parserState;
char *input = PG_GETARG_CSTRING(0);
if (strlen(input) == 0)
{
elog(ERROR, "zero length input string");
}
dbEnc = GetDatabaseEncoding();
initXMLParserState(&parserState, input, false);
xmlnodeParseNode(&parserState);
finalizeXMLParserState(&parserState);
PG_RETURN_POINTER(parserState.result);
}
开发者ID:andreypopp,项目名称:pg_xnode,代码行数:17,代码来源:xmlnode.c
示例3: strftime_win32
/*
* On WIN32, strftime() returns the encoding in CP_ACP (the default
* operating system codpage for that computer), which is likely different
* from SERVER_ENCODING. This is especially important in Japanese versions
* of Windows which will use SJIS encoding, which we don't support as a
* server encoding.
*
* So, instead of using strftime(), use wcsftime() to return the value in
* wide characters (internally UTF16) and then convert it to the appropriate
* database encoding.
*
* Note that this only affects the calls to strftime() in this file, which are
* used to get the locale-aware strings. Other parts of the backend use
* pg_strftime(), which isn't locale-aware and does not need to be replaced.
*/
static size_t
strftime_win32(char *dst, size_t dstlen,
const char *format, const struct tm * tm)
{
size_t len;
wchar_t wformat[8]; /* formats used below need 3 bytes */
wchar_t wbuf[MAX_L10N_DATA];
/* get a wchar_t version of the format string */
len = MultiByteToWideChar(CP_UTF8, 0, format, -1,
wformat, lengthof(wformat));
if (len == 0)
elog(ERROR, "could not convert format string from UTF-8: error code %lu",
GetLastError());
len = wcsftime(wbuf, MAX_L10N_DATA, wformat, tm);
if (len == 0)
{
/*
* strftime failed, possibly because the result would not fit in
* MAX_L10N_DATA. Return 0 with the contents of dst unspecified.
*/
return 0;
}
len = WideCharToMultiByte(CP_UTF8, 0, wbuf, len, dst, dstlen - 1,
NULL, NULL);
if (len == 0)
elog(ERROR, "could not convert string to UTF-8: error code %lu",
GetLastError());
dst[len] = '\0';
if (GetDatabaseEncoding() != PG_UTF8)
{
char *convstr = pg_any_to_server(dst, len, PG_UTF8);
if (convstr != dst)
{
strlcpy(dst, convstr, dstlen);
len = strlen(dst);
pfree(convstr);
}
}
return len;
}
开发者ID:myechuri,项目名称:pipelinedb,代码行数:61,代码来源:pg_locale.c
示例4: X509_NAME_to_text
/*
* Equivalent of X509_NAME_oneline that respects encoding
*
* This function converts X509_NAME structure to the text variable
* converting all textual data into current database encoding.
*
* Parameter: X509_NAME *name X509_NAME structure to be converted
*
* Returns: text datum which contains string representation of
* X509_NAME
*/
Datum
X509_NAME_to_text(X509_NAME *name)
{
BIO *membuf = BIO_new(BIO_s_mem());
int i,
nid,
count = X509_NAME_entry_count(name);
X509_NAME_ENTRY *e;
ASN1_STRING *v;
const char *field_name;
size_t size;
char nullterm;
char *sp;
char *dp;
text *result;
(void) BIO_set_close(membuf, BIO_CLOSE);
for (i = 0; i < count; i++)
{
e = X509_NAME_get_entry(name, i);
nid = OBJ_obj2nid(X509_NAME_ENTRY_get_object(e));
v = X509_NAME_ENTRY_get_data(e);
field_name = OBJ_nid2sn(nid);
if (!field_name)
field_name = OBJ_nid2ln(nid);
BIO_printf(membuf, "/%s=", field_name);
ASN1_STRING_print_ex(membuf, v,
((ASN1_STRFLGS_RFC2253 & ~ASN1_STRFLGS_ESC_MSB)
| ASN1_STRFLGS_UTF8_CONVERT));
}
/* ensure null termination of the BIO's content */
nullterm = '\0';
BIO_write(membuf, &nullterm, 1);
size = BIO_get_mem_data(membuf, &sp);
dp = (char *) pg_do_encoding_conversion((unsigned char *) sp,
size - 1,
PG_UTF8,
GetDatabaseEncoding());
result = cstring_to_text(dp);
if (dp != sp)
pfree(dp);
BIO_free(membuf);
PG_RETURN_TEXT_P(result);
}
开发者ID:Epictetus,项目名称:postgres,代码行数:57,代码来源:sslinfo.c
示例5: percent_encode
static char *
percent_encode(unsigned char *s, int srclen)
{
unsigned char *end;
StringInfoData buf;
int len;
initStringInfo(&buf);
if (srclen < 0)
srclen = strlen((char *) s);
end = s + srclen;
for (; s < end; s += len)
{
unsigned char *utf;
int ulen;
len = pg_mblen((const char *) s);
if (len == 1)
{
if (('0' <= s[0] && s[0] <= '9') ||
('A' <= s[0] && s[0] <= 'Z') ||
('a' <= s[0] && s[0] <= 'z') ||
(s[0] == '-') || (s[0] == '.') ||
(s[0] == '_') || (s[0] == '~'))
{
appendStringInfoChar(&buf, s[0]);
continue;
}
}
utf = pg_do_encoding_conversion(s, len, GetDatabaseEncoding(), PG_UTF8);
ulen = pg_encoding_mblen(PG_UTF8, (const char *) utf);
while(ulen--)
{
appendStringInfo(&buf, "%%%2X", *utf);
utf++;
}
}
return buf.data;
}
开发者ID:apsaltis,项目名称:twitter_fdw,代码行数:45,代码来源:twitter_fdw.c
示例6: pg_sasl_prepare
Datum
pg_sasl_prepare(PG_FUNCTION_ARGS)
{
char *password = text_to_cstring(PG_GETARG_TEXT_PP(0));
char *prep_password = NULL;
if (GetDatabaseEncoding() != PG_UTF8)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("Database encoding is not UTF-8")));
if (pg_saslprep(password, &prep_password) != SASLPREP_SUCCESS)
ereport(ERROR,
(errcode(ERRCODE_INTERNAL_ERROR),
errmsg("Error while processing SASLprep")));
PG_RETURN_TEXT_P(cstring_to_text(prep_password));
}
开发者ID:fabriziomello,项目名称:pg_plugins,代码行数:18,代码来源:pg_sasl_prepare.c
示例7: String_createNTS
char* String_createNTS(jstring javaString)
{
char* result = 0;
if( 0 == javaString )
return result;
if ( uninitialized )
{
const char* u8buf;
s_server_encoding = GetDatabaseEncoding();
u8buf = JNI_getStringUTFChars( javaString, NULL);
if ( 0 == u8buf )
return result;
result = (char*)pg_do_encoding_conversion(
(unsigned char *)u8buf, (int)strlen( u8buf),
PG_UTF8, s_server_encoding);
if ( result == u8buf )
result = pstrdup( result);
JNI_releaseStringUTFChars( javaString, u8buf);
return result;
}
else
{
jobject charbuf = JNI_callStaticObjectMethodLocked(s_CharBuffer_class,
s_CharBuffer_wrap, javaString);
StringInfoData sid;
initStringInfo(&sid);
appendCharBuffer(&sid, charbuf);
JNI_deleteLocalRef(charbuf);
result = (char*)pg_do_encoding_conversion(
(unsigned char *)sid.data, sid.len, PG_UTF8, s_server_encoding);
/* pg_do_encoding_conversion will return the source argument
* when no conversion is required. Don't free it in that case.
*/
if(result != sid.data)
pfree(sid.data);
}
return result;
}
开发者ID:jmptrader,项目名称:pljava,代码行数:44,代码来源:String.c
示例8: String_createJavaStringFromNTS
jstring String_createJavaStringFromNTS(const char* cp)
{
jstring result = 0;
if(cp != 0)
{
/* Would be nice if a direct conversion to UTF16 was provided.
*/
char* utf8 = (char*)pg_do_encoding_conversion((unsigned char*)cp, strlen(cp), GetDatabaseEncoding(), PG_UTF8);
result = JNI_newStringUTF(utf8);
/* pg_do_encoding_conversion will return the source argument
* when no conversion is required. We don't want to accidentally
* free that pointer.
*/
if(utf8 != cp)
pfree(utf8);
}
return result;
}
开发者ID:DacKiller,项目名称:pljava,代码行数:19,代码来源:String.c
示例9: String_createNTS
char* String_createNTS(jstring javaString)
{
char* result = 0;
if(javaString != 0)
{
/* Would be nice if a direct conversion from UTF16 was provided.
*/
char* utf8 = (char*)JNI_getStringUTFChars(javaString, 0);
result = (char*)pg_do_encoding_conversion(
(unsigned char*)utf8, strlen(utf8), PG_UTF8, GetDatabaseEncoding());
/* pg_do_encoding_conversion will return the source argument
* when no conversion is required. We always want a copy here.
*/
if(result == utf8)
result = pstrdup(result);
JNI_releaseStringUTFChars(javaString, utf8);
}
return result;
}
开发者ID:DacKiller,项目名称:pljava,代码行数:20,代码来源:String.c
示例10: executormgr_setup_env
void
executormgr_setup_env(MemoryContext ctx)
{
MemoryContext old;
if (executor_cache.init)
return;
executor_cache.pool = poolmgr_create_pool(ctx, (PoolMgrCleanCallback) executormgr_destory);
executor_cache.entrydb_pool = poolmgr_create_pool(ctx, (PoolMgrCleanCallback) executormgr_destory);
executor_cache.ctx = ctx;
executor_cache.init = true;
/* TODO: Setup dispatcher information. But should remove in the future. */
old = MemoryContextSwitchTo(ctx);
MyProcPort->dboid = MyDatabaseId;
MyProcPort->dbdtsoid = get_database_dts(MyDatabaseId);
MyProcPort->bootstrap_user = get_rolname(BOOTSTRAP_SUPERUSERID);
MyProcPort->encoding = GetDatabaseEncoding();
MemoryContextSwitchTo(old);
}
开发者ID:oarap,项目名称:incubator-hawq,代码行数:21,代码来源:executormgr.c
示例11: String_appendJavaString
void String_appendJavaString(StringInfoData* buf, jstring javaString)
{
if(javaString != 0)
{
/* Would be nice if a direct conversion from UTF16 was provided.
*/
char* utf8 = (char*)JNI_getStringUTFChars(javaString, 0);
char* dbEnc = (char*)pg_do_encoding_conversion(
(unsigned char*)utf8, strlen(utf8), PG_UTF8, GetDatabaseEncoding());
appendStringInfoString(buf, dbEnc);
/* pg_do_encoding_conversion will return the source argument
* when no conversion is required. We don't want to accidentally
* free that pointer.
*/
if(dbEnc != utf8)
pfree(dbEnc);
JNI_releaseStringUTFChars(javaString, utf8);
}
}
开发者ID:DacKiller,项目名称:pljava,代码行数:21,代码来源:String.c
示例12: xmldoc_in
Datum
xmldoc_in(PG_FUNCTION_ARGS)
{
pg_enc dbEnc;
XMLNodeParserStateData parserState;
char *input = PG_GETARG_CSTRING(0);
if (strlen(input) == 0)
{
elog(ERROR, "zero length input string");
}
dbEnc = GetDatabaseEncoding();
if (dbEnc != PG_UTF8)
{
elog(ERROR, "The current version of xmlnode requires both database encoding to be UTF-8.");
}
initXMLParserState(&parserState, input, false);
xmlnodeParseDoc(&parserState);
finalizeXMLParserState(&parserState);
PG_RETURN_POINTER(parserState.result);
}
开发者ID:andreypopp,项目名称:pg_xnode,代码行数:21,代码来源:xmlnode.c
示例13: locate_stem_module
static void
locate_stem_module(DictSnowball *d, char *lang)
{
const stemmer_module *m;
/*
* First, try to find exact match of stemmer module. Stemmer with
* PG_SQL_ASCII encoding is treated as working with any server encoding
*/
for (m = stemmer_modules; m->name; m++)
{
if ((m->enc == PG_SQL_ASCII || m->enc == GetDatabaseEncoding()) &&
pg_strcasecmp(m->name, lang) == 0)
{
d->stem = m->stem;
d->z = m->create();
d->needrecode = false;
return;
}
}
/*
* Second, try to find stemmer for needed language for UTF8 encoding.
*/
for (m = stemmer_modules; m->name; m++)
{
if (m->enc == PG_UTF8 && pg_strcasecmp(m->name, lang) == 0)
{
d->stem = m->stem;
d->z = m->create();
d->needrecode = true;
return;
}
}
ereport(ERROR,
(errcode(ERRCODE_UNDEFINED_OBJECT),
errmsg("no Snowball stemmer available for language \"%s\" and encoding \"%s\"",
lang, GetDatabaseEncodingName())));
}
开发者ID:adunstan,项目名称:pg-cvs-mirror,代码行数:40,代码来源:dict_snowball.c
示例14: strftime_win32
/*
* On WIN32, strftime() returns the encoding in CP_ACP (the default
* operating system codpage for that computer), which is likely different
* from SERVER_ENCODING. This is especially important in Japanese versions
* of Windows which will use SJIS encoding, which we don't support as a
* server encoding.
*
* So, instead of using strftime(), use wcsftime() to return the value in
* wide characters (internally UTF16) and then convert it to the appropriate
* database encoding.
*
* Note that this only affects the calls to strftime() in this file, which are
* used to get the locale-aware strings. Other parts of the backend use
* pg_strftime(), which isn't locale-aware and does not need to be replaced.
*/
static size_t
strftime_win32(char *dst, size_t dstlen, const wchar_t *format, const struct tm * tm)
{
size_t len;
wchar_t wbuf[MAX_L10N_DATA];
int encoding;
encoding = GetDatabaseEncoding();
len = wcsftime(wbuf, MAX_L10N_DATA, format, tm);
if (len == 0)
/*
* strftime call failed - return 0 with the contents of dst
* unspecified
*/
return 0;
len = WideCharToMultiByte(CP_UTF8, 0, wbuf, len, dst, dstlen, NULL, NULL);
if (len == 0)
elog(ERROR,
"could not convert string to UTF-8: error code %lu", GetLastError());
dst[len] = '\0';
if (encoding != PG_UTF8)
{
char *convstr =
(char *) pg_do_encoding_conversion((unsigned char *) dst,
len, PG_UTF8, encoding);
if (dst != convstr)
{
strlcpy(dst, convstr, dstlen);
len = strlen(dst);
}
}
return len;
}
开发者ID:AXLEproject,项目名称:postgres,代码行数:54,代码来源:pg_locale.c
示例15: char2wchar
size_t
char2wchar(wchar_t *to, const char *from, size_t len)
{
if (len == 0)
return 0;
#ifdef WIN32
if (GetDatabaseEncoding() == PG_UTF8)
{
int r;
r = MultiByteToWideChar(CP_UTF8, 0, from, len, to, len);
if (!r)
{
pg_verifymbstr(from, strlen(from), false);
ereport(ERROR,
(errcode(ERRCODE_CHARACTER_NOT_IN_REPERTOIRE),
errmsg("invalid multibyte character for locale"),
errhint("The server's LC_CTYPE locale is probably incompatible with the database encoding.")));
}
Assert(r <= len);
return r;
}
else
#endif /* WIN32 */
if ( lc_ctype_is_c() )
{
/*
* pg_mb2wchar_with_len always adds trailing '\0', so
* 'to' should be allocated with sufficient space
*/
return pg_mb2wchar_with_len(from, (pg_wchar *)to, len);
}
return mbstowcs(to, from, len);
}
开发者ID:berkeley-cs186,项目名称:course-fa07,代码行数:39,代码来源:ts_locale.c
示例16: PyString_FromStringAndSize
/*
* Convert a C string in the PostgreSQL server encoding to a Python
* unicode object. Reference ownership is passed to the caller.
*/
PyObject *
PyString_FromStringAndSize(const char *s, Py_ssize_t size)
{
char *utf8string;
PyObject *o;
utf8string = (char *) pg_do_encoding_conversion((unsigned char *) s,
strlen(s),
GetDatabaseEncoding(),
PG_UTF8);
if (size < 0)
{
o = PyUnicode_FromString(utf8string);
}
else
{
o = PyUnicode_FromStringAndSize(utf8string, size);
}
if (utf8string != s)
pfree(utf8string);
return o;
}
开发者ID:ergo70,项目名称:Multicorn,代码行数:27,代码来源:python.c
示例17: wchar2char
/*
* wchar2char --- convert wide characters to multibyte format
*
* This has the same API as the standard wcstombs() function; in particular,
* tolen is the maximum number of bytes to store at *to, and *from must be
* zero-terminated. The output will be zero-terminated iff there is room.
*/
size_t
wchar2char(char *to, const wchar_t *from, size_t tolen)
{
size_t result;
if (tolen == 0)
return 0;
#ifdef WIN32
/*
* On Windows, the "Unicode" locales assume UTF16 not UTF8 encoding, and
* for some reason mbstowcs and wcstombs won't do this for us, so we use
* MultiByteToWideChar().
*/
if (GetDatabaseEncoding() == PG_UTF8)
{
result = WideCharToMultiByte(CP_UTF8, 0, from, -1, to, tolen,
NULL, NULL);
/* A zero return is failure */
if (result <= 0)
result = -1;
else
{
Assert(result <= tolen);
/* Microsoft counts the zero terminator in the result */
result--;
}
}
else
#endif /* WIN32 */
{
Assert(!lc_ctype_is_c());
result = wcstombs(to, from, tolen);
}
return result;
}
开发者ID:MicroMirror,项目名称:gpdb,代码行数:44,代码来源:mbutils.c
示例18: Generic_Text_IC_like
static inline int
Generic_Text_IC_like(text *str, text *pat)
{
char *s,
*p;
int slen,
plen;
/*
* For efficiency reasons, in the single byte case we don't call lower()
* on the pattern and text, but instead call to_lower on each character.
* In the multi-byte case we don't have much choice :-(
*/
if (pg_database_encoding_max_length() > 1)
{
/* lower's result is never packed, so OK to use old macros here */
pat = DatumGetTextP(DirectFunctionCall1(lower, PointerGetDatum(pat)));
p = VARDATA(pat);
plen = (VARSIZE(pat) - VARHDRSZ);
str = DatumGetTextP(DirectFunctionCall1(lower, PointerGetDatum(str)));
s = VARDATA(str);
slen = (VARSIZE(str) - VARHDRSZ);
if (GetDatabaseEncoding() == PG_UTF8)
return UTF8_MatchText(s, slen, p, plen);
else
return MB_MatchText(s, slen, p, plen);
}
else
{
p = VARDATA_ANY(pat);
plen = VARSIZE_ANY_EXHDR(pat);
s = VARDATA_ANY(str);
slen = VARSIZE_ANY_EXHDR(str);
return SB_IMatchText(s, slen, p, plen);
}
}
开发者ID:adunstan,项目名称:pg-cvs-mirror,代码行数:37,代码来源:like.c
示例19: PG_GETARG_UINT32
Datum
chr (PG_FUNCTION_ARGS)
{
uint32 cvalue = PG_GETARG_UINT32(0);
text *result;
int encoding = GetDatabaseEncoding();
if (encoding == PG_UTF8 && cvalue > 127)
{
/* for Unicode we treat the argument as a code point */
int bytes;
char *wch;
/* We only allow valid Unicode code points */
if (cvalue > 0x001fffff)
ereport(ERROR,
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
errmsg("requested character too large for encoding: %d",
cvalue)));
if (cvalue > 0xffff)
bytes = 4;
else if (cvalue > 0x07ff)
bytes = 3;
else
bytes = 2;
result = (text *) palloc(VARHDRSZ + bytes);
SET_VARSIZE(result, VARHDRSZ + bytes);
wch = VARDATA(result);
if (bytes == 2)
{
wch[0] = 0xC0 | ((cvalue >> 6) & 0x1F);
wch[1] = 0x80 | (cvalue & 0x3F);;
}
开发者ID:42penguins,项目名称:postgres,代码行数:36,代码来源:oracle_compat.c
示例20: pg_bind_textdomain_codeset
/*
* Bind gettext to the codeset equivalent with the database encoding.
*/
void
pg_bind_textdomain_codeset(const char *domainname)
{
#if defined(ENABLE_NLS)
int encoding = GetDatabaseEncoding();
int i;
/*
* gettext() uses the codeset specified by LC_CTYPE by default, so if that
* matches the database encoding we don't need to do anything. In CREATE
* DATABASE, we enforce or trust that the locale's codeset matches
* database encoding, except for the C locale. In C locale, we bind
* gettext() explicitly to the right codeset.
*
* On Windows, though, gettext() tends to get confused so we always bind
* it.
*/
#ifndef WIN32
const char *ctype = setlocale(LC_CTYPE, NULL);
if (pg_strcasecmp(ctype, "C") != 0 && pg_strcasecmp(ctype, "POSIX") != 0)
return;
#endif
for (i = 0; pg_enc2gettext_tbl[i].name != NULL; i++)
{
if (pg_enc2gettext_tbl[i].encoding == encoding)
{
if (bind_textdomain_codeset(domainname,
pg_enc2gettext_tbl[i].name) == NULL)
elog(LOG, "bind_textdomain_codeset failed");
break;
}
}
#endif
}
开发者ID:MicroMirror,项目名称:gpdb,代码行数:39,代码来源:mbutils.c
注:本文中的GetDatabaseEncoding函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论