:relfileprefix: ../../
[#boost-urls-encode-0a]

== xref:boost.adoc[pass:[boost]]::xref:boost/urls.adoc[pass:[urls]]::encode


Apply percent-encoding to a string


=== Synopsis

Declared in header `<https://www.github.com/boostorg/url/blob/develop/include/boost/url/encode.hpp#L118[boost/url/encode.hpp,window=blank_]>`

[source,cpp,subs="verbatim,macros,-callouts"]
----
template<class CharSet>
std::size_t
encode(
    char* dest,
    std::size_t size,
    core::string_view s,
    CharSet const& unreserved,
    xref:boost/urls/encoding_opts.adoc[encoding_opts] opt = = {});
----

=== Description


This function applies percent-encoding
to the string using the given options and
character set. The destination buffer
provided by the caller is used to store
the result, which may be truncated if
there is insufficient space.
[,cpp]
----
char buf[100];
assert( encode( buf, sizeof(buf), "Program Files", pchars ) == 15 );
----

=== Throws nothing.

* link:https://datatracker.ietf.org/doc/html/rfc3986#section-2.1[2.1. Percent-Encoding (rfc3986)]




=== Return Value


The number of characters written
to the destination buffer.



=== Parameters

|===
| Name | Description 

| *dest*
| 
The destination buffer
to write to.

| *size*
| 
The number of writable
characters pointed to by `dest`.
If this is less than `encoded_size(s)`,
the result is truncated.

| *s*
| 
The string to encode.

| *unreserved*
| 
The set of characters
that is not percent-encoded.

| *opt*
| 
The options for encoding. If
this parameter is omitted, the default
options are used.

|===




=== See Also


xref:boost/urls/encode-0a.adoc[encode]
,
xref:boost/urls/encoded_size.adoc[encoded_size]
,
xref:boost/urls/make_pct_string_view.adoc[make_pct_string_view]
.



