This article covers features introduced in SpiderMonkey 1.8
Convert a JavaScript string to a C string.
Syntax
char * JS_EncodeString(JSContext *cx, JSString *str); char * JS_EncodeStringToUTF8(JSContext *cx, JS::HandleString str); // Added in SpiderMonkey 24
| Name | Type | Description | 
|---|---|---|
| cx | JSContext * | A context. Requires request. In a JS_THREADSAFEbuild, the caller must be in a request on thisJSContext.. | 
| str | JSString */JS::HandleString | A string to encode. | 
Description
JS_EncodeString and JS_EncodeStringToUTF8 convert the specified JavaScript str to a C string (an array of 8-bit chars).
If JS_CStringsAreUTF8 is true, then the returned string of JS_EncodeString is UTF-8, and the conversion is lossless. Otherwise the high byte is simply dropped from each char16_t.
JS_EncodeStringToUTF8 encode the string to UTF-8.
The array returned by JS_EncodeString on success is allocated as though by a call to JS_malloc. The caller may modify it and is responsible for freeing it.
Note that for non-ASCII strings, if JS_CStringsAreUTF8 is false, these functions can return a corrupted copy of the contents of the string. Use JS_GetStringChars to access the 16-bit characters of a JavaScript string without conversions or copying.
On success, JS_EncodeString and JS_EncodeStringToUTF8 return a pointer to the char array, which is null-terminated.
On failure, JS_EncodeString and JS_EncodeStringToUTF8 return NULL
See Also
- MXR ID Search for JS_EncodeString
- MXR ID Search for JS_EncodeStringToUTF8
- JS_EncodeStringToBuffer
- bug 397215 - added JS_EncodeString
- bug 835719 - added JS_EncodeStringToBuffer