summaryrefslogtreecommitdiffstats
path: root/base/command_line.cc
diff options
context:
space:
mode:
authorsuzhe@chromium.org <suzhe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-26 03:58:53 +0000
committersuzhe@chromium.org <suzhe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-26 03:58:53 +0000
commitb44bd303ceac189036b0fb73e9cff383f11ad516 (patch)
treec035588f7aefffa2983f3ea44ba1a378104281d1 /base/command_line.cc
parent14cbb6a5af82cc577b2fc3442d5a5df0a2b710de (diff)
downloadchromium_src-b44bd303ceac189036b0fb73e9cff383f11ad516.zip
chromium_src-b44bd303ceac189036b0fb73e9cff383f11ad516.tar.gz
chromium_src-b44bd303ceac189036b0fb73e9cff383f11ad516.tar.bz2
Fix Issue 19689: Command line URL parameter does not support Chinese.
This CL fixes issue 19689 by handling command line values with native encoding on non-Windows systems. For Linux, native encoding specified in current locale is used. For Mac, UTF-8 will always be used. This CL only changes command line values and program name to use native encoding, command line switches still use ASCII. BUG=19689: Command line URL parameter does not support Chinese TEST=Execute chrome with "http://www.google.com/search?q=中文" to see if this url can be opened successfully. Review URL: http://codereview.chromium.org/174139 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24423 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/command_line.cc')
-rw-r--r--base/command_line.cc18
1 files changed, 9 insertions, 9 deletions
diff --git a/base/command_line.cc b/base/command_line.cc
index 582c8b8..43b068c 100644
--- a/base/command_line.cc
+++ b/base/command_line.cc
@@ -127,7 +127,7 @@ void CommandLine::InitFromArgv() {
}
CommandLine::CommandLine(const std::wstring& program) {
- argv_.push_back(WideToASCII(program));
+ argv_.push_back(base::SysWideToNativeMB(program));
}
#endif
@@ -224,7 +224,7 @@ std::wstring CommandLine::GetSwitchValue(
#if defined(OS_WIN)
return result->second;
#else
- return ASCIIToWide(result->second);
+ return base::SysNativeMBToWide(result->second);
#endif
}
}
@@ -240,12 +240,12 @@ std::wstring CommandLine::program() const {
std::vector<std::wstring> CommandLine::GetLooseValues() const {
std::vector<std::wstring> values;
for (size_t i = 0; i < loose_values_.size(); ++i)
- values.push_back(ASCIIToWide(loose_values_[i]));
+ values.push_back(base::SysNativeMBToWide(loose_values_[i]));
return values;
}
std::wstring CommandLine::program() const {
DCHECK(argv_.size() > 0);
- return ASCIIToWide(argv_[0]);
+ return base::SysNativeMBToWide(argv_[0]);
}
#endif
@@ -341,15 +341,15 @@ void CommandLine::AppendSwitch(const std::wstring& switch_string) {
void CommandLine::AppendSwitchWithValue(const std::wstring& switch_string,
const std::wstring& value_string) {
std::string ascii_switch = WideToASCII(switch_string);
- std::string ascii_value = WideToASCII(value_string);
+ std::string mb_value = base::SysWideToNativeMB(value_string);
argv_.push_back(kSwitchPrefixes[0] + ascii_switch +
- kSwitchValueSeparator + ascii_value);
- switches_[ascii_switch] = ascii_value;
+ kSwitchValueSeparator + mb_value);
+ switches_[ascii_switch] = mb_value;
}
void CommandLine::AppendLooseValue(const std::wstring& value) {
- argv_.push_back(WideToASCII(value));
+ argv_.push_back(base::SysWideToNativeMB(value));
}
void CommandLine::AppendArguments(const CommandLine& other,
@@ -369,7 +369,7 @@ void CommandLine::AppendArguments(const CommandLine& other,
void CommandLine::PrependWrapper(const std::wstring& wrapper_wide) {
// The wrapper may have embedded arguments (like "gdb --args"). In this case,
// we don't pretend to do anything fancy, we just split on spaces.
- const std::string wrapper = WideToASCII(wrapper_wide);
+ const std::string wrapper = base::SysWideToNativeMB(wrapper_wide);
std::vector<std::string> wrapper_and_args;
SplitString(wrapper, ' ', &wrapper_and_args);
argv_.insert(argv_.begin(), wrapper_and_args.begin(), wrapper_and_args.end());