Skip to content

Commit 803dc5f

Browse files
committed
use 'C' locale for alnum check in urlencoder
1 parent 4e9ce9d commit 803dc5f

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

src/iceberg/util/url_encoder.cc

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919

2020
#include "iceberg/util/url_encoder.h"
2121

22+
#include <locale>
23+
2224
namespace iceberg {
2325

2426
namespace {
@@ -36,9 +38,10 @@ std::string UrlEncoder::Encode(std::string_view str_to_encode) {
3638
std::string result;
3739
result.reserve(str_to_encode.size() * 3 /* Worst case: every char becomes %XX */);
3840

39-
for (unsigned char c : str_to_encode) {
40-
if (std::isalnum(c) || c == '-' || c == '_' || c == '.' || c == '~') {
41-
result += static_cast<char>(c);
41+
for (char c : str_to_encode) {
42+
if (std::isalnum(c, std::locale::classic()) || c == '-' || c == '_' || c == '.' ||
43+
c == '~') {
44+
result += c;
4245
} else {
4346
result += '%';
4447
result += hex_chars[c >> 4];

src/iceberg/util/url_encoder.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
#include <string_view>
2424

2525
#include "iceberg/iceberg_export.h"
26-
#include "iceberg/result.h"
2726

2827
/// \file iceberg/util/url_encoder.h
2928
/// \brief URL encoding and decoding.

0 commit comments

Comments
 (0)