---
name: "scan_urlencoded"
section: "3"
platform: "linux"
package: "libowfat-dev"
version: "0.32-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/scan_urlencoded"
---

# scan\_urlencoded(3)

decode urlencoded data

## NAME

scan\_urlencoded - decode urlencoded data

## SYNTAX

**#include \<libowfat/textcode.h\>**

size\_t **scan\_urlencoded**(const char \**src*,char \**dest*,size\_t\* *destlen*);

## DESCRIPTION

scan\_urlencoded decodes urlencoded data from src into dest. Decoding stops when it encounters any invalid input characters (including ' ', '?' and '&').

It will then write the number of decoded bytes in dest into \*destlen, and return the number of bytes decoded from src.

Note that the plus character is handled differently depending on whether we are encoding the query part or the path (application/x-www-form-urlencoded). In "http://example.com/a+b?c+d", only the second plus can be decoded as a space character. If you want + decoded to space, use scan\_urlencoded2.

dest can be NULL. destlen can be NULL. dest can be src.

## RETURN VALUE

scan\_urlencoded returns the number of bytes successfully scanned and processed from src.

## EXAMPLES

scan\_urlencoded("foo%3ebar",buf,&i) -\> return 9, i=7, buf="foo.bar"

scan\_urlencoded("foo+bar",buf,&i) -\> return 7, i=7, buf="foo+bar"

scan\_urlencoded2("foo+bar",buf,&i) -\> return 7, i=7, buf="foo bar"

## SEE ALSO

[scan\_urlencoded2(3)](/scan_urlencoded2/3.md), [scan\_xlong(3)](/scan_xlong/3.md), [scan\_8long(3)](/scan_8long/3.md), [fmt\_ulong(3)](/fmt_ulong/3.md)
