---
name: "detect"
section: "3"
platform: "linux"
package: "libchardet"
version: "1.0.6-4"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/detect/3"
---

# detect(3)

Detecting character set and measuring accuracy of charset

## NAME

detect, detect\_r - Detecting character set and measuring accuracy of charset

## SYNOPSIS

**#include \<chardet.h\>**

**short detect (char \* inbuf, DetectObj \*\* outbuf);**

**short detect\_r (char \* inbuf, size\_t inlen, DetectObj \*\* outbuf);**

## DESCRIPTION

Storing charset and accuracy of **inbuf to** **outbuf**

The **detect** API is deprecated becase this api is not binary safe. Use or replace to **detect\_r** api.

### Arguments:

- **inbuf**

  input string for detecting

- **inlen**

  length of input string for detecting

- **outbuf**

  Stroing inforamtion of **inbuf.** The structure of **outbuf** is follows.

  ```
  	typedef struct DetectObject {
  		char * encoding;
  		float confidence;
  	} DetectObj;
  ```

  The **outbuf** variable is must initialized by **detect\_obj\_init** API before calling this detect api.

## RETURN VALUE

Returns following condition as case by case.

- **CHARDET\_SUCCESS**

  Detecting success

- **CHARDET\_NO\_RESULT**

  Detection failure

- **CHARDET\_NULL\_OBJECT**

  Don't initializing **outbuf** with **chardet\_obj\_init**

- **CHARDET\_OUT\_OF\_MEMORY**

  Occuring **out of memory** at internal API

## EXAMPLE

```
#include <chardet.h>
int main (void) {
	DetectObj *obj;
	char * checkstr = "안녕하세요";
	if ( (obj = detect_obj_init ()) == NULL ) {
		fprintf (stderr, "Memory Allocation failed\n");
		return CHARDET_MEM_ALLOCATED_FAIL;
	}
	//switch (detect (checkstr, &obj))
	switch (detect_r (checkstr, strlen (checkstr), &obj))
	{
		case CHARDET_OUT_OF_MEMORY :
			fprintf (stderr, "On handle processing, occured out of memory\n");
			detect_obj_free (&obj);
			return CHARDET_OUT_OF_MEMORY;
		case CHARDET_NULL_OBJECT :
			fprintf (stderr,
					"2st argument of chardet() is must memory allocation "
					"with detect_obj_init API\n");
			return CHARDET_NULL_OBJECT;
	}
	# check support obj->bom with CHARDET_BOM_CHECK constant
	printf ("encoding: %s, confidence: %f, exists bom: %d\n", obj->encoding, obj->confidence, obj->bom);
	detect_obj_free (&obj);
    return 0;
}
```

## AUTHORS

JoungKyun.Kim \<http://oops.org\>

## BUG REPORTS

Use QnA board on https://github.com/Joungkyun/libchardet/issues

## SEE ALSO

[detect\_handledata(3)](/detect_handledata/3.md), [detect\_obj\_init(3)](/detect_obj_init/3.md), [detect\_obj\_free(3)](/detect_obj_free/3.md)
